2010-06-17 14 views
15

मैं दो मॉडलरेल I18n accepts_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 

मिल गया है मेरी नेस्टेड रूप में यदि सत्यापन विफल रहा स्क्रीन पर प्रदर्शित यह त्रुटि प्राप्त:

"उत्तर पाठ का जवाब खाली नहीं हो सकता "

मैंने रेलवे I18n का उपयोग करके कुछ हद तक सफलतापूर्वक मेरे गुण नामों को अनुकूलित किया है। यह वास्तव में व्यवहार नहीं करता है कि मैं हालांकि कैसे उम्मीद करूंगा। नीचे YML फ़ाइल को प्रभावित नहीं करता विशेषता नाम error_messages_for

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

में छापा जाता है लेकिन अगर स्क्रिप्ट/कंसोल से मैं
SurveyResponse.human_attribute_name ("जवाब") की कोशिश

मैं उम्मीद परिणाम प्राप्त "प्रतिक्रिया" का।

मैं क्या करना चाहते हैं क्या मान्यता त्रुटि संदेश है कहते हैं:

"रिस्पांस जवाब पाठ खाली नहीं हो सकता"। कोई विचार जो मुझे ठीक करने की ज़रूरत है?

उत्तर

13

इस प्रयास करें:। मैं रेल 3 उपयोग कर रहा हूँ और यह मेरे लिए काम कर रहा है (मेरे i18n फ़ाइल पर कुछ भिन्न है, का उपयोग कर

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

बजाय मॉडल की "विशेषता" मैं नहीं जानता कि अगर यह काम करता है 2.3 में)

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

कि इससे पहले कि मैं YML "answers_answer_text" कहा जाता है में एक विशेषता बनाने के लिए कोशिश कर रहा था लेकिन यह काम नहीं किया गया था।

मुझे आशा है कि यह आपकी समस्या हल करेगी।

+0

3.1 में ठीक काम किया। धन्यवाद! –

+3

दरअसल, इतना अच्छा नहीं: '[अस्वीकरण चेतावनी] नेस्टेड I18n नेमस्पेस लुकअप "activerecord.attributes.survey_response" के तहत अब समर्थित नहीं है। लेकिन [इस चर्चा] [https://github.com/rails/rails/issues/1869) द्वारा जा रहा है, अभी तक पूरी तरह से काम न किए गए गैर-बहिष्कृत विकल्प प्रतीत नहीं होता है। –

52

रेल 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

+0

बहुत बहुत धन्यवाद। मैं पुष्टि कर सकता हूं कि यह मेरे लिए रेल 3.2.8 में काम करता है जहां कुछ और नहीं हुआ। खोज के एक घंटे से अधिक मुझे ले लिया! – brad

+2

धन्यवाद! यह रेल 4.0 के साथ काम करता है :) –

+2

यह रेल 4.1 पर भी काम करता है। इसे स्वीकार किया जाना चाहिए = पी –

संबंधित मुद्दे