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で帳票印刷を試す~thinreports

  www.thinreports.org/ github.com/thinreports/thinreports-rails3-example 目次1 とりあえずサンプルを試してみた2 ソ …

Rails3.2でコードのお作法を指摘してもらう~Rails Best Practices

コードのお作法を自動でチェックしてくれるrails_best_practiceを導入した

あとは、Railsのルートで[crayon- …

no image

Rubyからdocxを生成する

    前提 Rubyでdocxをいろいろ分析してみた 変数の仕様~正規表現 いろいろなパターンで試してみた 例えば、こんな文 [crayon-5900a4ceefbd549306 …

ActionCableのサンプルをみてみた

By: Samantha Brough – CC BY 2.0 目次1 ActionCableとは2 rails4での利用3 redisサーバーの準備4 cableサーバーの準備5 チャッ …

no image

RailsでRedisを使う例のメモ

最近よく見かけるようなのでメモ Redisって大量にメモリを積んでないとダメかと思ってたけど、思ったよりいろんな方面に用途がありそう(リンク先の情報はわたしは未検証です) Redisの基礎 (全14回 …