我用在我的模型下面的代碼中插入一個鏈接到一個驗證錯誤信息使用的屬性:Rails的自定義驗證錯誤信息在另一種模式
class Bar < ActiveRecord::Base
has_many :foos
validate :mode_matcher
def mode_matcher
self.foos.each do |f|
errors[:base] << mode_mismatch(foo) unless foo.mode == "http"
end
end
def mode_mismatch(f)
foo_path = Rails.application.routes.url_helpers.foo_path(f)
"Foo <a href='#{foo_path}'>#{f.name}</a> has the wrong mode.".html_safe
end
它運作良好,但我知道,推薦這樣做的方法是通過一個語言環境文件。我遇到麻煩,因爲我驗證另一個模型的屬性,所以下面不工作:
en:
activerecord:
errors:
models:
bar:
attributes:
foo:
mode_mismatch: "Foo %{link} has the wrong mode."
什麼是做到這一點的正確方法是什麼?
問題你正在使用'mode_matcher'方法來驗證,但你沒有在你的yml文件中指定 – Choco 2014-11-21 09:20:53
whoops,如果我使用'mode_matcher'代替'mode_mismatch',則會發生同樣的事情。 – stephenmurdoch 2014-11-21 09:25:22
你會得到錯誤 – Choco 2014-11-21 09:27:15