Rails I18n accepted_nested_attributes_for和error_messages_for
我有两个型号
class SurveyResponse has_many :answers, :class_name => SurveyResponseAnswer.name accepts_nested_attributes_for :answers end class SurveyResponseAnswer belongs_to :survey_response validates_presence_of :answer_text end
在我的嵌套表单中,如果validation失败,我会在屏幕上显示此错误:
“答案答案文字不能为空”
我使用rails I18n成功地定制了我的属性名称。 它的行为并不像我期望的那样。 下面的yml文件不会影响error_messages_for中打印属性名称的方式
en: activerecord: models: survey_response: answers: "Response"
但是,如果从脚本/控制台我尝试
SurveyResponse.human_attribute_name( “答案”)
我得到了“响应”的预期结果。
我想做的是validation错误消息说:
“响应答案文本不能为空”。 我需要解决的任何想法?
试试这个:
en: activerecord: models: survey_response: answers: answer_text: "Response"
我正在使用Rails 3,这对我有用(我的i18n文件有点不同,使用“属性”而不是模型。我不知道这是否适用于2.3)
en: activerecord: attributes: survey_response: answers: answer_text: "Response"
在此之前,我试图在yml中创建一个名为“answers_answer_text”的属性,但它无法正常工作。
我希望这能解决你的问题。
从Rails 3.2.0开始,i18n yaml已改为
en: activerecord: attributes: survey_response: foo: "Foo" survey_response/answers: answer_text: "Response"
(注意斜杠。)这也允许您在集合本身上定义属性名称,例如
en: activerecord: attributes: survey_response: foo: "Foo" answers: "Ripostes" survey_response/answers: answer_text: "Response"
资料来源: https : //github.com/rails/rails/pull/3859