Rails:表单对象在 activemodel 上找不到 I18n(命名空间问题)
Rails: Form Object not finding I18n on activemodel (namespacing issue)
我有一个表单对象 (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"
我遇到的问题是,我无法让它使用国际化。
在你的config/locales/en.yml
文件中应该是activerecord:
而不是activemodel:
吗?
好吧,我通过深入研究源代码找到了答案。我遇到的问题是我的 form object
在 Users::PasswordAndLoginUpdatingForm
命名空间中。
诀窍 是 使用 activemodel:
作为您的命名空间,但是,如果您的模型中有更多的命名空间,它们将用 /
分隔s.
因此,正确的 yml 如下所示:
en:
activemodel:
errors:
models:
users/password_and_login_updating_form:
attributes:
requested_email_address:
invalid: "foo"
我有一个表单对象 (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"
我遇到的问题是,我无法让它使用国际化。
在你的config/locales/en.yml
文件中应该是activerecord:
而不是activemodel:
吗?
好吧,我通过深入研究源代码找到了答案。我遇到的问题是我的 form object
在 Users::PasswordAndLoginUpdatingForm
命名空间中。
诀窍 是 使用 activemodel:
作为您的命名空间,但是,如果您的模型中有更多的命名空间,它们将用 /
分隔s.
因此,正确的 yml 如下所示:
en:
activemodel:
errors:
models:
users/password_and_login_updating_form:
attributes:
requested_email_address:
invalid: "foo"