2011-08-19 7 views
9

Her doğrulama için bir hata iletisini yerelleştirebilirim, ancak belirli bir model için nasıl bir hata oluşturabilirim.i18n: belirli bir model için hata iletisi yerelleştirmesi

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

Ama user modeli için mesajı değiştirmek istiyor:

Olağan yerel benziyor bu deneyin

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

cevap

28

:

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

Referans:

ActiveRecord code comments

PS: yerelleştirme dize dinamik ikamesi için interpolasyon değişkeni kullanmalıdır.

Örn: Bunu biliyor nasıl

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

açıklayabilir: user nesnenin login sahadaki bir hata eklensin mi? Yerelleştirmelerde ihtiyacım olan her şeyi nasıl anlayabilirim? Not: Ben bağlantı olarak ben sadece acımasız ham HTML kullanın – fl00r

+0

ActiveRecord kod yorumlarında belirtilmiştir. Mangoid'in aynı sözleşmeyi takip edebileceğini düşündüm. –

+0

Parola sıfırlama formuma bir bağlantı eklemek için bunu denedim ancak şu hatayı almaya devam ettim: "geçersiz enterpolasyon argümanı eksik" geçerli değil.% {Link} şifrenizi tekrar göndermek için onaylayın. "({: Model =>" Kullanıcı ",: öznitelik =>" Parola belirteci ",: value => nil} verilir). Rails 3.1'de herhangi bir şey değişti mi? – David