我用我的模型的一些驗證並嘗試將錯誤轉化爲自己的語言Rails 3的自定義驗證與國際化
在這裏,在我的模型誤差TaiSan
我有一些只會驗證這樣的:
class TaiSan < ActiveRecord::Base
attr_accessible :MaTS, :TenTS
validates_length_of :MaTS, :in => 9..10, :allow_nil => false
validates_presence_of :MaTS
validates_uniqueness_of :MaTS
在控制器和視圖我剛剛離開它是默認(scafford)
在我locales\vi.yml
這個樣子的
vi:
errors: &errors
format: ! '%{attribute} %{message}'
messages:
taken: đã tồn tại trong cơ sở dữ liệu
blank: không được trống
empty: không được rỗng
too_long:
one: quá dài (tối đa là 1 kí tự)
other: quá dài (tối đa là %{count} kí tự)
too_short:
one: quá ngắn (tối thiểu là 1 kí tự)
other: quá ngắn (tối thiểu là %{count} kí tự)
wrong_length:
one: sai độ dài (phải là 1 kí tự)
other: sai độ dài (phải là %{count} kí tự)
任何其他除外validate_uniqueness_of的錯誤消息做工精細,它被翻譯成我的語言上面定義,但taken:
仍然是'...has already been taken'
任何線索什麼我錯過了???非常珍貴任何提示和回答
解決方案
我已經添加vi:
後一些代碼locale\vi.yml
這樣的:
vi:
activerecord:
errors:
messages:
taken: "đã tồn tại"
現在它工作正常!那麼,爲什麼我必須在唯一性驗證之前添加activerecord
,但其他(存在,長度,...)不需要?
由於我的複製粘貼,我的壞,它是'vi'在那裏,它仍然是錯誤的唯一屬性 – WindzSoul 2013-05-05 14:52:38
快速響應,關於'vi'和'en'的問題,我看着你更多鏈接,並找到了上面編輯的解決方案,你能告訴我有什麼區別,我在那裏混淆,再次提前 – WindzSoul 2013-05-05 15:05:35
,你需要正確地嵌套你的密鑰。您不必將它們嵌套在'activerecord'下,但是您需要將它們嵌套在'errors'下。 – sevenseacat 2013-05-06 05:38:48