2011-10-06 13 views
6

私は、次のコードを持っている:として 表示メッセージに私が欲しい 生産Ruby on Rails:検証エラーメッセージをカスタマイズする方法は?

validates :name, :presence => true 

エラーメッセージは、「名前を空白にすることはできません」である代わりの実際の属性名(この場合は「名前」)を使用して"登録名は空白にできません"。 検証時にデフォルトのメッセージを上書きするにはどうすればよいですか?私は追加しようとしました:メッセージ が動作しませんでした...

ありがとう!

validates :name, presence: { message: "Registration name can't be blank" } 

または古いハッシュロケット構文バージョン:

答えて

13

をとしてカスタムキーを定義キーはエラーが発生したときに自動的に使用されます。

参考:http://edgeguides.rubyonrails.org/i18n.html#translations-for-active-record-models (Active Recordのモデルの5.1翻訳)少し遅くなりました(約35日後)

+1

それについて聞いたことはありません。うわー、何か新しいことを学んだ - 素敵な答え! :) –

+0

@ ream88 - その2番目。確かに非常に素晴らしい答えは、間違いなくこれを使用します。私は以前、カスタムエラーメッセージのために数ヶ月以上前の宝石を使用していました。この宝石はhttps://github.com/nwise/custom_error_messageでホストされています。それははっきりしていない場合には – prasvin

+0

将来の読者に、 'en.yml'ファイルはの' config/locales'に住んでいます。 – GMA

7

これは、トリックを行います

activerecord: 
    attributes: 
    model_name: 
     attribute_name1: key1 
     attribute_name2: key2 
       ...... 

この:en.ymlファイルで

validates :name, :presence => { :message => "Registration name can't be blank" } 
+0

しかし、私はまだのようにコメント私はメッセージから単語「名前」を取り除きたい「名前の登録名が空白にすることはできません」を参照してください... – Mayumi

+0

しかし、この問題はあなたのビューに関連しています。 –

+0

どういう意味ですか? – Mayumi

6

そのこれに答えるために。それで、残念です。しかし、ちょうど私がカスタムエラーメッセージのために数ヶ月以上前に宝石を使っていたことを分かりたいと思っていました。

このプラグインでは、特定のメッセージの属性名を省略できます。あなたがしなければならないのは、メッセージを '^'文字で始めることだけです。

私はちょうどそれが3月以降更新されていない https://github.com/nwise/custom_error_message &でそれを確認しました。だから、私はおそらくそれを適切な時期に使用しました。

ps:ymlファイルのカスタムキーを定義する答えがより適切です。

関連する問題