ruby on rails - Nested attributes form error message customization -
मेरे पास निम्न मॉडल है
class OrgPerson & lt; ActiveRecord :: बेस has_and_belongs_to_many: TypRole has_and_belongs_to_many: OrgContact has_one: OrgCredential, dependent:: नष्ट कर रहा है belong_to: OrgCompany, foreign_key: "org_company_id" belong_to: TypPosition, foreign_key: "typ_position_id" मान्य: first_name, उपस्थिति: सही पुष्टि: last_name, उपस्थिति: सच स्वीकार करने के लिए स्वीकार करता है_अष्टित_एटी_गुणः Org क्रेडेंशियल एंड क्लास ऑर्गेक्रिडेन्शियल & lt; ActiveRecord :: belongs_to आधार: OrgPerson, foreign_key: "org_person_id" सत्यापन करती है: user_name, उपस्थिति: सच सत्यापन करती है: पासवर्ड, लंबाई: {न्यूनतम: 6} before_create: create_remember_token has_secure_password अंत
और निम्न मजबूत पैरामीटर:
डीईएफ़ person_params params.require (: org_person) .permit (: first_name,: last_name, org_credential_attributes: [: पासवर्ड: password_confirmation]) अंत
और निम्नलिखित new.html.erb
& lt;% = form_for (@person) do | f | & Gt%; & Lt;% = रेंडर 'साझा / त्रुटि_ संदेश'% & gt; & Lt; div वर्ग = "col-md-12" & gt; & Lt;% = f.text_field: प्रथम_नाम, प्लेसहोल्डर: "प्रथम नाम",: class = & gt; "फॉर्म-कंट्रोल"% & gt; & Lt;% = f.text_field: last_name, प्लेसहोल्डर: "अंतिम नाम",: class = & gt; "फॉर्म-कंट्रोल"% & gt; & Lt;% = f.fields_for: org_credentials do | oc |% & gt; & Lt;% = oc.password_field: पासवर्ड, प्लेसहोल्डर: "पासवर्ड",: class = & gt; "फॉर्म-कंट्रोल"% & gt; & Lt;% = oc.password_field: password_confirmation, प्लेसहोल्डर: "पासवर्ड पुष्टिकरण",: class = & gt; "फॉर्म-कंट्रोल"% & gt; & Lt;% end% & gt; & Lt;% = f.submit "अपना खाता बनाएं", वर्ग: "बीटीएन बीटीएन-बड़ी बीटीएन-प्राथमिक"% & gt; & Lt; / div & gt;
साझा / त्रुटि_ संदेश में
& lt;% यदि @ person.errors.any? & Gt%; & Lt; div id = "error_explanation" class = "col-md-12" & gt; & Lt; div वर्ग = "सतर्क चेतावनी-खतरे" भूमिका = "सतर्क" & gt; फ़ॉर्म में & lt;% = pluralize (@ person.errors.count, "त्रुटि")% & gt; होता है। & Lt; / div & gt; & LT; ul & gt; & Lt;% @ person.errors.full_messages.each do | msg | | & Gt%; & Lt; li & gt; * & lt;% = msg% & gt; & lt; / li & gt; & Lt;% end% & gt; & Lt; / ul & gt; & Lt; / div & gt; & Lt;% end% & gt;
समस्या जैसा कि तस्वीर में दिखाया गया है कि यह कहता है कि "संगठन का क्रेडेंशियल पासवर्ड बहुत छोटा है" जब मैं केवल यह कहना चाहता हूं कि "पासवर्ड बहुत छोटा है।" मैं रेल के लिए काफी नया हूँ और मुझे लगता है कि मुझे त्रुटि हैश के माध्यम से फिर से पटकना होगा "पासवर्ड बहुत छोटा है", लेकिन मुझे यह निश्चित नहीं है कि यह ऐसा करने का एकमात्र तरीका है या यदि कोई है आसान तरीका मुझे आशा है कि जो कोई एक ही समस्या में भाग गया हो, मुझे यह समझने के लिए कि उन्होंने इसे कैसे सुलझाया।
धन्यवाद!
संघों
सबसे पहले, आपको करने की आवश्यकता है पता है कि रेल को एसोसिएशन नाम की परिभाषा के लिए आवश्यक है - और कक्षा नाम के लिए:
# ऐप / मॉडल / org_person.rb क्लास ऑर्गपार्सन & lt; ActiveRecord :: बेस has_and_belongs_to_many: typ_roles has_and_belongs_to_many: org_contacts has_one: org_credential, dependent:: नष्ट belong_to: org_company संबंधित_to: typ_position validates: first_name, उपस्थिति: सही पुष्टि: last_name, उपस्थिति: true accepts_nested_attributes_for: org_credential end
-
संदेश
अपने त्रुटि संदेशों के संबंध में, और राहुल सिंह
की सिफारिश के अनुसार, आपको विचार है कि आप को परिभाषित कर सकते
आप निम्नलिखित का उपयोग कर ऐसा कर सकते हैं:
सत्यापन करती है: first_name,: last_name, उपस्थिति: {संदेश: "आप एक नाम दर्ज करना होगा ! " }
यह आप कस्टम संदेश दे देंगे, तथापि, वहाँ रेल के साथ एक चिपका बिंदु है, यह मुश्किल है कि विशेषता नाम प्राप्त करने के लिए अनुकूलित किया जा करने के लिए कर रहा है।
आप केवल संदेश दिखाने के लिए चाहते हैं तो आपके लिए सबसे अच्छा यह (लाइव कोड) की तरह कुछ का उपयोग किया जाएगा:
<कोड> & lt;% @ person.errors.each करते | attr, संदेश | & Gt%; & Lt; li & gt; & lt;% = msg% & gt; & lt; / li & gt; & Lt;% end% & gt;
Comments
Post a Comment