2011-08-19 29 views
9

我可以本地化每個驗證的錯誤消息,但是如何爲特定模型創建錯誤。i18n:特定模型的本地化錯誤信息

普通的語言環境是這樣的:

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 

但我想改變消息user型號:

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 
     user: 
      taken: "It is already taken. %{link_to 'Remember password', reset_password_path'}" 

回答

28

試試這個:

en: 
    mongoid: 
    errors: 
     messages: 
     taken: "It is already taken" 
     models: 
     user: 
      attributes: 
      login: 
       taken: "It is already taken. %{link}" 

參考:

ActiveRecord code comments

PS: 本地化字符串應該使用動態替換插值變量。

E.g:

user.errors.add(:login, :taken, :link => "foo") 
+0

你能解釋一下你怎麼知道: 上user對象的login字段添加錯誤?我如何理解本地化需要的路徑? PS:作爲鏈接我只使用殘酷的原始HTML – fl00r

+0

它在ActiveRecord代碼註釋中提到。我認爲mangoid可能遵循相同的約定。 –

+0

我嘗試添加一個鏈接到我的密碼重置表單,但不斷收到此錯誤:'缺少插值參數在'無效。點擊%{link}重新發送給您密碼確認「({:model =>」 User「,:attribute =>」Password token「,:value => nil} given)'。 Rails 3.1有什麼變化嗎? – David