Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

RoRでDBテーブルのカラムと一致しない項目がある入力フォームを実現する その7

 前回の続き。
matthew.hatenadiary.jp

i18n

 参考にしていたサイトのページではi18nについては触れられていないので書いておく。

 例えば日本語化したいとき、config/locale/ja.ymlというファイルを作っておき、config/application.rbのclass application内に次を書いておけば日本語化が可能であることは以前かいておいた。

config.i18n.default_locale = :ja

同じように日本語化したいが、次のようしないといけいない。

  • accepts_nested_attributes_for によって指定された子モデルの名前は親モデルの属性として定義する。
  • errors.full_messagesで利用されるメッセージにはactiverecord:/attributes:で「親モデル名/子モデル名」で定義されたものが利用される。

こんな感じになる:

ja:
  activerecord:
    models:
      customer: 顧客
      shipping: 配送先
    attributes:
      customer:
        name: 名前
        # accepts_nested_attributes_for を使った場合はここで定義
        shippings: 配送先 # これがフォームのラベルで表示される
      shipping: # これらはフォームのラベルで利用可能
        address: 住所
        state: 都道府県
        city: 市区町村
        street: 町名字番地等
      # エラーメッセージ向けは次のように定義
      customer/shippings:
        address: 住所
        state: 都道府県
        city: 市区町村
        street: 町名字番地等

もっとよい定義方法はないものか・・・
いずれにせよ、テーブルのカラムと一致しない項目がある入力フォームでもきちんと定義できる。

参考:
ruby-rails.hatenadiary.com