我在模型中进行了以下验证:

validates_inclusion_of :whatever, :in => [true, false], :message => I18n.t('please_select_whatever')

在生产模式下,翻译似乎不起作用:在所有语言中,显示的总是英语翻译(可能是因为我在应用程序中将英语设置为默认语言环境…?).

所以我假设我们不能在模型中转换验证,因为模型只加载一次——当服务器启动时(然后应用默认的语言环境).

我说得对吗?如果是,你将如何解决这个问题?

谢谢你的帮助!

推荐答案

解决方案是在模型中不包含任何custom个消息键,比如...

:message => I18n.t('activerecord.errors.models.my_model.attributes.whatever.please_select_whatever')

然后,模型将应用默认消息键,例如"validates_inclusion_of"的情况下的":inclusion"

...在config/locales/en中.yml您需要:

en:
  activerecord:
    errors:
      models:
        my_model:
          attributes:
            whatever:
              inclusion: "Please select whatever." # see default key: "inclusion"

有关参考,请查看相应的导轨指南:

http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models

Ruby-on-rails相关问答推荐

错误AESGCMOpen获取密码:消息身份验证失败:Golang解密GCM

有没有一种方法可以点击一个按钮来冒泡到父元素?

在Ruby中按特定值合并时,将两个对象数组添加到一起

删除链接不起作用,重定向 echo 示 Ruby

根据表单内的 Select 字段值渲染部分内容

如何在生成的 HTML 本身中显示部分名称

计算总价(商品数量*商品价格)

你如何发布到 Capybara 中的 URL?

如何在 IRB/Rails 控制台中 suppress 返回值的输出?

使用brew 软件安装了 elasticsearch,但找不到配置文件

rails4 未知编码名称 - CP720

Rails 在关联模型中排序

未定义的方法 attr_accessible

将根 url 重定向到 Rails 应用程序中的其他位置

Rails:从视图内渲染视图(不是部分视图)

Rails:带参数的 URL/路径

我怎样才能看到水豚在失败的黄瓜步骤中发现了什么?

为什么不对 Rspec + Selenium 使用共享的 ActiveRecord 连接?

将现有的 html.erb 转换为 Haml

rails路由中资源和资源之间的区别?