【问题标题】:Nested Models attribute localization for error messages in Rails 3.1Rails 3.1 中错误消息的嵌套模型属性本地化
【发布时间】:2012-02-07 04:23:40
【问题描述】:

我有一个深度嵌套的模型表单。

当嵌套模型属性出错时,会显示错误消息:

列表项标识符 url 不能为空。

这是:

Model_name + 属性 + 本地化文件错误信息

正确的信息应该是:

项目链接 url 不能为空。

ruby-1.9.2-p290 :014 > ListItem.human_attribute_name("identifier")
=> "Item Link" 

除了错误消息中的嵌套模型属性名称外,本地化工作正常。

看起来它是 2.3.4 中的 bug 已修复,但我无法弄清楚。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 localization internationalization ruby-on-rails-3.1


    【解决方案1】:

    不确定这是否是解决此问题的“正确”方法,但这会奏效。

    在您的本地化文件中,您可能有这样的内容:

    en:
      activerecord:
        attributes:
          list_item:
            identifier: Item Link
    

    只要您直接从嵌套模型中处理它,这将起作用。 Rails 验证似乎是通过父模型进行的,因此您需要以下内容:

    en:
      activerecord:
        attributes:
          list_item:
            identifier: Item Link
          parent_model:
            list_item:
              identifier: Item Link
    

    对我来说,这似乎违反了 DRY 原则,因为您也必须在嵌套级别重复人类可读的名称,但这应该适合您。

    【讨论】:

    【解决方案2】:

    以下内容对我有用。我有一个课程模型和一个离线课程模型。 OfflineCourse 嵌套在 Course 中。

    以下 YAML 对我来说可以正常工作。希望这会有所帮助

      course:
        title: Titolo
        subtitle: Sottotitolo
        description: Descrizione
        abstract: Abstract
        audience: A chi è rivolto?
        topic: Argomenti
        typology: Tipologia
        stars: Stelle
      course/offline_courses:
        start_date: Data inizio
        end_date: Data fine
        location: Luogo
        schedule: Programma
        visible: Visibile
        city: Città
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      相关资源
      最近更新 更多