我有一个表单对象(rails 3),我正在尝试使用config/locales/en.yml
来获取错误消息。
我的表单对象如下所示:
class Users::PasswordAndLoginUpdatingForm
include Virtus.model
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Validations
attribute :requested_email_address, String
validates :requested_email_address, allow_blank: true, format: { with: User::VALID_EMAIL_REGEX }
在我的表格中,我有通常的
form_for @form_object ... do |f|
如果我pry
进入并查明f.object_name
是什么,我会users_password_and_login_updating_form
最后,我的config/locales/en.yml
看起来像这样:
en:
activemodel:
errors:
models:
users_password_and_login_updating_form:
attributes:
requested_email_address:
invalid: "bar"
我遇到的问题是,我无法使用国际化。
答案 0 :(得分:3)
我通过挖掘源代码找到了答案。我遇到的问题是我的form object
位于Users::PasswordAndLoginUpdatingForm
命名空间中。
技巧 使用activemodel:
作为您的命名空间,但是,如果您的模型中有更多名称空间,则它们将与/
分开。
所以,正确的yml看起来像这样:
en:
activemodel:
errors:
models:
users/password_and_login_updating_form:
attributes:
requested_email_address:
invalid: "foo"
答案 1 :(得分:0)
activerecord:
文件中activemodel:
不是config/locales/en.yml
吗?