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

執筆者:

関連記事

docx生成アプリのサンプルを公開~simple_docx_generater

自作gemを使ったRailsアプリの作成例を公開しました!   サインインの情報はつぎのとおりです テンプレートの登録・編集権限のあるマネージャー manager1@example.com

連続的な位置情報の取得とHerokuへのアップ~HTML5 Geolocation API

  目次1 連続的な位置情報の取得2 heroku3 結果 連続的な位置情報の取得 連続的な位置情報の取得はこんなかんじで書いてみた [crayon-58dd88aca7db05167773 …

Rails3.2でhtml5で取得した位置情報をAjaxで住所表示する~geocoder

    HTML5ではブラウザからユーザーのPCの位置情報を取得することができるGeoLocation APIというものがある (もちろんデフォルトではユーザーに確認をする設定にな …

no image

Rails3.2+MongoDBでつくったアプリをheroku+mongoHQにアップしたよ

Stack Overflowはなんでも答えてくれる エラーメッセージをコピーしてググればたいていの答えはStack Overflowで出尽くしている 目次1 Gemfile2 herokuにアプリ作成 …

Rails3.2.8でテーブル並び替えのテストを作る~cucumberと正規表現

前提 Railsのテーブル並び替えを実装する Rails3.2.8で自動テスト環境を整える〜cucumber+spork+guard 目次1 作戦(ストラテジー)2 have_contentの正規表現 …