嵌套模型属性Rails 3.1中的错误消息的本地化

时间:2012-01-10 18:42:25

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

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

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

  

列表项标识符网址可能不是空白。

这是:

  

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

正确的信息应该是:

  

项目链接网址可能不是空白。

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

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

看起来它是2.3.4中的bug已修复,但我无法理解。

2 个答案:

答案 0 :(得分: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原则,因为你必须在嵌套级别重复人类可读的名称,但这应该适合你。

答案 1 :(得分:1)

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

以下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à