11

モデル(ユーザー)に次の検証があります。

  validates :first_name,:length => {:minimum => 2,:maximum => 50},:format => { :with => /[a-zA-Z]+/ }

ymlロケールファイルに次のものがあります。

 attributes:
   first_name:
     too_short: "First name is too short"
     too_long: "First name is too long"
     invalid: "First name is not valid"

ここで、を開始してrails console、次のように記述します。

a = User.new
a.valid?
a.errors.full_messages

次のエラーが表示されます。

["First name First name is too short", "First name First name is not valid"]

ご覧のとおり、フィールドエラーの前に属性名も追加されています。これまでのところ、コードのどこでもを使用model.errors[:field]しており、これによりymlファイルにある文字列が常に表示されますが、文字列を次のように変更したいと思います。

 attributes:
   first_name:
     too_short: " is too short"
     too_long: " is too long"
     invalid: " is not valid"

そして、full_messagesバージョンを使用します。問題は、属性名を翻訳する方法がわからないことです。たとえば、名の代わりに名前を最初に付けたいとしましょう。どうすればいいですか?

4

2 に答える 2

32

ここで答えを見つけることができますhttp://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

config/locale/(your_lang).yml で

en: 
  activerecord:
    models:
      user: Dude
    attributes:
      user:
        first_name: "Name first"

「en:」を使用する必要がある言語記号に変更します

乾杯

于 2012-05-30T08:53:46.487 に答える