2011-10-06 85 views
6

我有以下代碼:產生Ruby on Rails:如何自定義驗證錯誤信息?

validates :name, :presence => true 

錯誤信息爲「名稱不能爲空」 代替使用實際的屬性名稱(在此情況下「名稱」)欲 顯示消息作爲「註冊名稱不能爲空」。 如何覆蓋驗證上的默認消息?我試圖追加:消息 但它沒有工作...

謝謝!

回答

13

在en.yml文件中定義自定義鍵爲:

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

這密鑰將在錯誤生成時自動使用。

參考:http://edgeguides.rubyonrails.org/i18n.html#translations-for-active-record-models (5.1翻譯的Active Record模式)

+1

從來沒有聽說過。哇,學到了新的東西 - 很好的答案! :) –

+0

@ ream88 - 第二。確實非常好的答案,一定會使用這個。我以前曾經使用過幾個月後的寶石來獲取自定義錯誤信息。該寶石託管在https://github.com/nwise/custom_error_message。 – prasvin

+0

對於未來的讀者,如果不清楚,'en.yml'文件位於'config/locales'中。 – GMA

7

這將這樣的伎倆:

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

或舊的哈希火箭語法版本:

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

但我仍然看到評論爲「名稱註冊名稱不能爲空」我想從郵件中刪除「名稱」一詞... – Mayumi

+0

但這個問題與您的觀點有關。 –

+0

你是什麼意思? – Mayumi

6

它的有點晚了,現在(後約35天),以回答這個問題。所以,對此感到抱歉。但只是想分享一下,我已經使用了幾個月前的寶石來獲取自定義錯誤消息。

該插件允許您省略特定消息的屬性名稱。你所要做的就是用'^'字符開始消息。

我只是檢查它在 https://github.com/nwise/custom_error_message &它沒有自3月份以來更新。所以,我可能在正確的時間使用它。

ps:你在yml文件中定義自定義鍵的答案比較合適。