tutorial rails i18n gema error ruby-on-rails internationalization error-messages-for

ruby-on-rails - gema - rails i18n activerecord error messages



Rails I18n accept_nested_attributes_for y error_messages_for (2)

Tengo dos modelos

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

En mi formulario anidado, si la validación falla, aparece este error en la pantalla:

"respuestas texto de respuesta no puede estar en blanco"

He personalizado mis nombres de atributos con cierto éxito utilizando los carriles I18n. Aunque no se comporta exactamente como lo esperaría. El archivo yml a continuación no afecta cómo se imprime el nombre del atributo en error_messages_for

en: activerecord: models: survey_response: answers: "Response"

Pero si desde script / consola lo intento
SurveyResponse.human_attribute_name ("respuestas")

Obtengo el resultado esperado de "Respuesta".

Lo que me gustaría hacer es que el mensaje de error de validación diga:

"El texto de respuesta de respuesta no puede estar en blanco". ¿Alguna idea de lo que necesito arreglar?


A partir de Rails 3.2.0, el i18n yaml ha cambiado a

en: activerecord: attributes: survey_response: foo: "Foo" survey_response/answers: answer_text: "Response"

(Observe la barra diagonal). Esto también le permite definir un nombre de atributo en la colección en sí, por ejemplo

en: activerecord: attributes: survey_response: foo: "Foo" answers: "Ripostes" survey_response/answers: answer_text: "Response"

Fuente: https://github.com/rails/rails/pull/3859


Prueba esto:

en: activerecord: models: survey_response: answers: answer_text: "Response"

Estoy usando Rails 3 y esto me funciona (mi archivo i18n es un poco diferente, usa "atributos" en lugar de modelos. No sé si esto funciona en 2.3)

en: activerecord: attributes: survey_response: answers: answer_text: "Response"

Antes de eso, estaba intentando crear un atributo en el yml llamado "answers_answer_text" pero no estaba funcionando.

Espero que esto resuelva tu problema.