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サイト作成
-, ,

執筆者:

関連記事

Railsでdocxをフォーマット指定でダウンロードできるようにする

タイトルだけだと何のことだかわからない railsでdocuments/2とかをGETメソッドで呼び出すとdocumentsコントローラーのshowメソッドを呼び出すようになってるんだけど、docum …

文字をダブルクリックしてそのままフォーム編集するやつのメモ~in place edit

By: the Italian voice 目次1 Best in place2 Mercury editor3 create.js4 スクラッチで5 X-editable Best in place …

Mac OSXにHyper EstraierのRuby Bindingをインストールする

By: Kanko* – CC BY 2.0 目次1 環境2 Hyper Estraierのインストール3 ソースのダウンロード4 パッチを適用する5 rvmのためにconfigureファ …

Rails3.2とBackbone.jsでサーバーサイドのページネーション

By: Haldane Martin – CC BY 2.0   前提 Rails3.2とBackbone.jsでサーバーサイドのフィルタリング Rails3.2とBackbon …

no image

RubyとRailsのテスト関係のリンクメモ

  目次1 RSpec2 Factory Girl3 Capybara RSpec rspec.info/ Expectations とMatcher rubydoc.info/gems/r