【问题标题】:Rails I18n: How to add a error translation key which is common for all model base errors?Rails I18n:如何添加对所有模型基础错误都通用的错误翻译键?
【发布时间】:2015-07-07 17:27:42
【问题描述】:

在我当前的应用程序中,我们使用 I18n。我必须添加一个 :base 错误键,该键对所有模型都是通用的。 例如:我会在en.yml 文件的一处添加:common_error 并按如下方式使用,

@user.errors.add(:base, :common_error)
@post.errors.add(:base, :common_error)
..and so on

我真的很担心如果我应该在所有模型中添加:common_error 键,因为应用程序中存在更多模型。

我当前的en.yml 文件如下所示,

en-uk:
  activerecord:
    errors:
      <<: *errors
        models:
          user:
            attributes:
              base:
                some_key: ""
          post:
            attributes:
              base:
                some_key: ""

我不确定是否有一个我没有找到的简单解决方案。但任何想法都会被应用。 提前致谢!

【问题讨论】:

    标签: ruby-on-rails rails-i18n


    【解决方案1】:

    不要使用相对翻译键 -

    @user.errors.add(:base, t(:common_error) )
    

    如果您将符号传递给错误。添加翻译使用模型的范围。

    【讨论】:

    • 虽然我的工作已经完成..我想知道是否有任何解决方案使用我在问题中解释的方式使用相对翻译键:)
    • 您也许可以在 yaml 文件中使用节点弓箭手。然后,您将对每个模型的 user:/attributes:/base: 条目而不是显式字符串进行引用。
    • 我正在尝试理解节点锚here。你有什么简单的例子可以提供吗?
    【解决方案2】:

    不用通过特定的models 添加错误,您可以定义其他错误消息,就像 Rails 使用 messages 键处理其内部错误一样。

    en:
      errors:
        messages:
          common_error: 'is common'
    

    这将适用于 Active Record 和 Active Model 模型。如果您只想将其应用于其中一个或另一个,您可以将errors 嵌套在activerecordactivemodel 下,如下所示:

    en:
      activemodel:
        errors:
          messages:
            common_error: 'is common'
    

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2018-06-10
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      相关资源
      最近更新 更多