pat*_*vey 3 forms ruby-on-rails rails-i18n
我有一个表单对象(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 }
Run Code Online (Sandbox Code Playgroud)
在我的形式中我有通常的
form_for @form_object ... do |f|
Run Code Online (Sandbox Code Playgroud)
如果我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"
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,我无法让它使用国际化。
好吧,我通过深入研究源代码找到了答案。我遇到的问题form object
是在Users::PasswordAndLoginUpdatingForm
命名空间中。
诀窍是用作activemodel:
您的命名空间,但是,如果您的模型中有更多命名空间,它们将用/
s 分隔。
所以,正确的 yml 看起来像这样:
en:
activemodel:
errors:
models:
users/password_and_login_updating_form:
attributes:
requested_email_address:
invalid: "foo"
Run Code Online (Sandbox Code Playgroud)