Railsで使えるGem RubyOnRailsでECサイト作成

RailsでECサイトを構築3 日本にあわせる~spree

投稿日:

 

前提

RailsでECサイト構築~spree

RailsでECサイト構築2 注文してみる~spree

テンプレートをダウンロード

spreeの仕組みは主にcore/apps以下にあって基本的にはこれを読み込む

カスタマイズするには、自分のアプリのapps以下にオーバーライドしたいファイル名でファイルを作成すればいい

実際にやるとかなり面倒くさかったりするけど

まず適当なフォルダにソースをダウンロードする

主にアドレスを見ながらspree/core/apps以下を探す

テンプレートを改造する

例えば、住所入力画面を訂正したいとき、アドレスをみるとcheckout/だからapps/views/spree/checkout以下を解読していくと、住所入力のフォームは_address.html.erbで書いているとわかる

テンプレートと同じディレクトリ構成にして自分のアプリのapps/views/spree/checkout/_address.html.erbにコピーすればOK

請求用住所と配達用住所の二箇所のフォームを日本向けに訂正すると、こんな感じになる

デフォルトの国を変更する

groups.google.com/forum/?fromgroups=#!topic/spree-user/pftrAWp-7U4

リンク先を参考に、apps/model/spree/address.rbをみていくとdefault_countryで設定することがわかる

db/default/spree/countries.ymlで調べると、日本のIDは100とわかる

config/initializers/spree.rbで次のように指定する

サーバーを再起動すれば住所登録の国のデフォルトが日本になる

氏名の順番

app/models/spree/address.rbの次のメソッドを変更すればOK

ただ、full_nameメソッドを使わずに直接書き出しているviewもあって、個々に直して行かないとダメぽい

例えば、app/views/spree/admin/shared/_address.html.erb

こんな感じに直せば日本向きっぽい感じになる

支払い方法

これは登録を編集して日本語にすればOK

そうすれば

あとは、i18nで翻訳とviewの改造を地道にやっていくだけだけど、たくさん直すところがある

誰もやってないのかな 日本向けのテンプレートがないか探してみたい

通貨の問題

config/initializers/spree.rbで設定できる値は次を調べればOK

github.com/spree/spree/blob/master/core/app/models/spree/app_configuration.rb

次の1行を足した

*この設定はadminのuiで設定できる値と同じらしい.つまりadminのuiで設定すればOK

あとはconfig/locales/ja_numbers.ymlというファイルをつくる

*これも意味があるのかわからない

 

ドルベースで計算して、円に換算しているところを直したい (*円に換算してるわけじゃなくて単に100倍しているだけだった)

調べたところ、1ヶ月くらい前に、number_to_currencyをすべてmoney.gemに置き換えたらしく、そのあたりが原因ぽい

github.com/spree/spree/issues/1911

lib/spree/money.rbのこれが原因じゃないかと思うけど対策がわからない

たぶん、Moneyがセントベースでcurrencyがドルベースだから100倍してるんだと思うんだけど、円だと100倍とか不要なんじゃないかと

アプリのlibにmoney.rbつくってみたけどオーバーライドできてない

たぶんMoneyクラスを再定義すればいいんじゃないかと思うんだけど、Railsのルールをよく理解できてない

モンキーパッチだが、gemのlib/spree/money.rbから*100を削ったらうまくいった

全世界の通貨について、Moneyとcurrencyが100倍する必要があるかどうかなんて調べるのめんどくさいし、これの修正は大変な気がする

*gemライブラリのメソッドをオーバーライドする方法がわかりました

stackoverflow.com/questions/2688853/how-to-override-a-class-method-of-the-gem-in-rails-application

config/initializers/に保存すればよかった

この辺の仕組みはRailsのクラスの構造をよく把握してないので理解できない

結論的にはconfig/initializers/money.rbに次の通りにすればOK

 

ちなみに、一般設定に、「Dollar Amounts Displayed As」なんて記述があるけど、この文はcurrencyを考慮しているわけじゃなくて単なるstringだった

翻訳文をつければ、円の合計が・・・とかの表示にできるはず

-Railsで使えるGem, RubyOnRailsでECサイト作成
-, ,

執筆者:

関連記事

no image

Rails3.2.8でPostgreSQLを使う(開発環境)〜pg gem

環境 Ubuntu server12.04にPostgreSQLをインストールする 参考 #342 Migrating to PostgreSQL @railscasts 目次1 準備2 データベース …

no image

Rails3.2でテーブルの並び替えをリファクタリング~ヘルパー

環境 Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現 テストができたのでHelper化 目次1 現状2 helper3 index.html.erb 現状 共通部分が …

Rails3.2でGoogle Calendarライクなカレンダーを使う〜fullcalendar-rails

目次1  fullcalendar-rails2 Hello fullcalendar3 オプション  fullcalendar-rails 2種類あるけど上の方を使った github.com/bok

no image

Rails3.2でユーザー権限を細かく設定~Devise + cancan

      参考 cancan でモテカワ♥愛され権限管理 How To: Integrate with CanCan for roles management &nbs …

Rails3.2でJasmineをつかってCoffeeScriptをテスト~jasminerice

    #261 Testing JavaScript with Jasmine (revised)   addyosmani.github.com/backbone-f