I've got two models
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
In my nested form if validation fails I get this error displayed on the screen:
"answers answer text can't be blank"
I've customized my attribute names somewhat successfully using rails I18n. It doesn't behave exactly how I would expect though. The yml file below doesn't affect how the attribute name is printed in error_messages_for
en:
activerecord:
models:
survey_response:
answers: "Response"
But if from script/console I try
SurveyResponse.human_attribute_name("answers")
I get the expected result of "Response".
What I'd like to do is have the validation error message say:
"Response answer text can't be blank". Any ideas what I need to fix?
As of Rails 3.2.0, the i18n yaml has changed to
en:
activerecord:
attributes:
survey_response:
foo: "Foo"
survey_response/answers:
answer_text: "Response"
(Note the slash.) This also permits you to define an attribute name on the collection itself, e.g.
en:
activerecord:
attributes:
survey_response:
foo: "Foo"
answers: "Ripostes"
survey_response/answers:
answer_text: "Response"
Source: https://github.com/rails/rails/pull/3859
Try this:
en:
activerecord:
models:
survey_response:
answers:
answer_text: "Response"
I am using Rails 3 and this is working for me (my i18n file is a bit different, using "attributes" instead of models. I don't know if this works in 2.3)
en:
activerecord:
attributes:
survey_response:
answers:
answer_text: "Response"
Before that I was trying to create a attribute in the yml called "answers_answer_text" but it was not working.
I hope this solves your issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With