加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 翻译Rails模型关联 – 无法正常工作

发布时间:2020-12-17 04:28:54 所属栏目:百科 来源:网络整理
导读:任何人都有一些提示如何在Rails中翻译模型关联? 例如:我有一个Person模型,可以有很多Phone.但是,一个人需要至少有一部电话.我无法翻译该验证.我能做的最好的就是: validates_presence_of :phones,:message = "At least one phone is required." 在我的YAM
任何人都有一些提示如何在Rails中翻译模型关联?

例如:我有一个Person模型,可以有很多Phone.但是,一个人需要至少有一部电话.我无法翻译该验证.我能做的最好的就是:

validates_presence_of :phones,:message => "At least one phone is required."

在我的YAML上,我替换了这一行以省略%{attribute}:

format: ! '%{message}'

这样只显示我的消息,并且我避免显示未翻译的字段名称.

这让我很头疼,因为有些宝石根本不允许我通过:message => “描述错误的东西”,所以我想通过我的YAML配置所有错误消息.

此外,对于某些模型,我能够翻译他们的属性,而与其他人我不是.例如:

activerecord:  
  attributes:
    additional_info:
      account_manager: "Manager"

这很有效.我可以在我的表格“经理”上看到.但是,当此字段出现错误时,Rails会将其显示为“其他信息帐户管理器不能为空”.

我试过这个:

activerecord:          
  errors:
    models:
      additional_info:
        attributes:
          account_manager: "Manager"

但没有运气.

我确实阅读了文档,但没有解释为什么会发生这种情况.

解决方法

Rails 3.2改变了这种行为.我之前发布的方式已被弃用.

现在,为了翻译关联,需要添加斜杠(而不是嵌套所有东西).所以不是这样的:

activerecord:
      attributes:
        person:
          additional_info:
            account_manager: "Manager"

现在正确的是:

activerecord:
      attributes:
        person:
          additional_info/account_manager: "Manager"

此外,我发现has_many关联的翻译方式与此不同.如果要翻译它们,以下示例可能会有所帮助:

activerecord:
      attributes:
         emails:
           address: "E-mail field"

我不需要像上面那样使用模型名称,而是需要传递关联名称,在本例中是电子邮件.

查看此评论并提取更多信息请求:

https://github.com/rails/rails/commit/c19bd4f88ea5cf56b2bc8ac0b97f59c5c89dbff7#commitcomment-619858

https://github.com/rails/rails/pull/3859

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读