具体而言,我试图本地化自定义方法示例here。我找到了类似的question,但我不知道如何在 errors.add()方法中传递:message 参数。我尝试过这样的事情:
errors.add(:discount, message: :greater_than_value_error)
但它打印出来:
{:message=>:greater_than_value_error}
而不是打印.yml文件中的实际错误消息。
这里的语法应该是什么?
我的.yml文件就像这样(不确定下面的这篇文章是否100%准确):
activerecord: #try to use activemodel here
errors:
models:
invoice: # or namespace/model_name
attributes:
discount:
greater_than_value_error: "can't be greater than total value"
答案 0 :(得分:2)
尝试使用rails 4跟踪errors.add :field_name, :message
。
errors.add(:discount, :greater_than_value_error)
答案 1 :(得分:0)
如果您正在编写自定义验证,那么您需要进行实际翻译,
errors.add(:discount, I18n.t(path_to_locale_text))
只有在使用内置方法时,才能将标准验证消息(如预定义验证器greater_than_value_error
)国际化。
validates_numericality_of :discount :greater_than => limit