jquery - Assigning model instance attributes based on a checkbox value -
मेरे पास एक उपयोगकर्ता मॉडल है जिसमें stage_name
और real_name
स्ट्रिंग एट्रिब्यूट्स । मुझे क्या करना है मेरे _form.hmlt.erb
में असली नाम इनपुट बॉक्स के बगल में एक चेकबॉक्स है जो पूछता है, असली नाम चरण का नाम है? यदि चेक किया जाता है तो मैं असली नाम को चरण नाम के रूप में निर्दिष्ट करना चाहता हूं और स्टेज नाम इनपुट बॉक्स को
real_name` नाम के रूप में उसके मूल्य के रूप में अक्षम कर देता हूं। अब तक मेरे पास है:
_form.html। एआरबी
& lt;% = form_for @user do | f | & Gt%; & Lt; div & gt; & Lt;% = f.text_field: stage_name% & gt; & Lt;% = f.text_field: stage_name% & gt; & Lt; / div & gt; & Lt; div & gt; & Lt;% = f.text_field: real_name% & gt; & Lt;% = f.text_field: real_name% & gt; # इस चेकबॉक्स में मेरे मॉडल कोड को कैसे बाँट करने के लिए सुनिश्चित नहीं हैं & lt;% = f.checkbox% & gt; & Lt;% = f.label 'असली नाम चरण का नाम है?' & Gt%; & Lt; / div & gt; & Lt; div & gt; & Lt;% = f.submit% & gt; & Lt; / div & gt; & Lt;% end% & gt; & LT; स्क्रिप्ट & gt; क्लिक करें (फ़ंक्शन () {var $ चेकबॉक्स = $ (यह), $ secondForm = $ ("input [type = 'text']" $ {फ़ंक्शन} ) .eq (2); यदि ($ चेकबॉक्स। ("चेक किया हुआ")) {$ secondForm.attr ("अक्षम", सच) .val ("& lt;% = @ user.real_name% & gt;"); } और {$ secondForm.attr ("अक्षम", गलत) .val ("");}});)}; & Lt; / स्क्रिप्ट & gt;
आपको केवल अपने मॉडल में एट्रिब्यूट एक्सेसर निर्दिष्ट करना है।
attr_accessor: real_name_is_stage_name
यह आपके मॉडल में एक गैर-निरंतर विशेषता पैदा करेगा जिसे आप कॉलबैक में से एक में देख सकते हैं, अगर मान 1
तब सेट करें real_name = stage_name
उदाहरण के लिए:
before_save करें अगर real_name_is_stage_name == "1" real_name = stage_name अंत समाप्ति
< / Pre>फिर आपके द्वारा किए गए परिवर्तनों के साथ बातचीत करने के लिए चेकबॉक्स को सेट करें ताकि आप चेकबॉक्स के मान को मॉडल पर भेज सकते हैं:
& lt;% = f.check_box : Real_name_is_stage_name% & gt;
यदि आप ऐसा करते हैं, तो जावास्क्रिप्ट कोड में आपको स्टेज नाम
text_field
को अक्षम करने की आवश्यकता होगी, जबcheck_box
की जांच की जाती है और रेल बाकी का काम करेगाModel.rb
<पूर्व>वर्ग मॉडल & lt; ActiveRecord :: बेस attr_accessor: name_check ## मान्यकरण ## कॉलबैक से पहले_वॅलिडेटेशन करते हैं यदि स्वयं। नाम_चेक == "1" और स्वयं.स्टेज_नाम। और! स्वयं। Self.real_name = self.stage_name end end end
_form.html.erb
& lt;% = form_for user Do | f | & Gt%; & Lt;% = रेंडर 'साझा / त्रुटि_ संदेश', ऑब्जेक्ट: @ यूज़र% & gt; & Lt; div & gt; & Lt;% = f.label: stage_name% & gt; & lt; br & gt; & Lt;% = f.text_field: stage_name% & gt; & Lt; / div & gt; & Lt; div & gt; & Lt;% = f.label: real_name% & gt; & lt; br & gt; & Lt;% = f.text_field: real_name% & gt; & Lt; div & gt; & Lt;% = f.label: name_check, 'असली नाम स्टेज नाम है?' & Gt%; & Lt;% = f.check_box: name_check, मान: f.obj.real_name.eql? (F.obj.stage_name)? "1": "0" यदि f.obj.real_name.present? और f.obj.stage_name.present? & Gt%; & Gt%; & Lt; / div & gt; & Lt; / div & gt; & Lt; div & gt; & Lt;% = f.label: मूल% & gt; & lt; br & gt; & Lt;% = f.text_field: origin% & gt; & Lt; / div & gt; & Lt;% = f.submit% & gt; & Lt;% end% & gt; & Lt;% = रेंडर 'स्क्रिप्ट'% & gt;
_scripts.html.erb
& lt; स्क्रिप्ट & gt; $ (फ़ंक्शन () {var $ nameCheck = $ ('# artist_name_check'), $ stepName = $ ('# artist_stage_name'), $ realName = $ ('# artist_real_name'), $ originalVal = $ stageName.val (); // चेक और दर्पण कलाकार का वास्तविक नाम और चरण का नाम अगर ($ nameCheck.is (': चेक')) {$ stepName.attr ("readonly", "readonly");} $ nameCheck.click (function () {if ($ NameCheck.is (": checked")) {$ stepName.attr ("readonly", "readonly")। Val ($ realName.val ());} और {$ stepName.attr ("readonly", गलत ) .val ($ मूलवैल)। फ़ोकस ();}});}); & Lt; / स्क्रिप्ट & gt;
Comments
Post a Comment