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

執筆者:

関連記事

Rails3.2でみたまま編集 〜hallo editor

  By: Fabio Marini – CC BY 2.0 文字をダブルクリックしてそのままフォーム編集するやつのメモ~in place edit 文字をダブルクリックしてその …

no image

Rails3.2のアプリにユーザー機能を追加する~Devise

  アプリにユーザー機能を追加するためにdeviseというgemを使った deviseを使えば高機能なユーザー管理機能を簡単につけることができる 参考 Rails3.2+Mongoidでログ …

Rails3.2でリアルタイムメッセージング~Private_pub、Faye

  Railsで簡単に非同期通信ができるPrivate_pubというgemを試した もともとrubyにはFayeという非同期通信ができるgemがあったが、簡単に安全な接続ができる実装を加えた …

no image

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

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

no image

Rails3でTwitter Bootstrapのサーチフォームを実装する~form_tag

目次1 git & gitolite2 仕組みを考える3 フィーチャの作成4 Viewの作成5 Controllerの作成6 Modelの作成7 テストが通らない!8 mergeして終わり g …