【问题标题】: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à