निम्नलिखित check_box_tag के साथ:अनचेक किए जाने पर 'गलत' या '0' पैरामीटर पोस्ट करने के लिए मैं check_box_tag कैसे बना सकता हूं?
<%= check_box_tag 'object[boolean_attribute]', 1, object.boolean_attribute %>
मैं केवल एक दिशा में boolean_attribute अद्यतन कर सकते हैं: असत्य से सत्य में।
डिफ़ॉल्ट रूप से अनचेक किया जाता है (क्योंकि object.boolean_attribute गलत है) और मैं इसे जांचता हूं और फिर फॉर्म सबमिट करता हूं, a: boolean_attribute => 1 पैरामीटर पोस्ट किया जाता है।
लेकिन, जब मैं सच से गलत से अद्यतन करने का प्रयास करता हूं तो कोई भी पारित नहीं होता है, इसलिए boolean_attribute सत्य रहता है।
दूसरे शब्दों में, जब (क्योंकि object.boolean_attribute सच है) डिफ़ॉल्ट रूप से चेक किया गया है और मैं इसे अचयनित और उसके बाद फार्म, एक सबमिट करें: boolean_attribute => 0 नहीं तैनात है।
मैं यह चेक_बॉक्स_टैग कैसे पोस्ट कर सकता हूं: boolean_attribute => 0 पैरामीटर अनचेक किए जाने पर? http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-check_box_tag
धन्यवाद:
एपीआई मैं समझ नहीं से अगर कोई इसे आसानी से प्राप्त करने के लिए पारित करने के लिए कुछ विकल्प है।
संपादित
किसी कारण मैं नहीं जान सकता (एक नेस्ट कई-से-अनेक संघ के साथ) अपने वास्तविक कोड में, hidden_field_tag काम नहीं कर रहा है।
<%= hidden_field_tag 'order[preparations_attributes][][cooked]', nil %>
<%= check_box_tag 'order[preparations_attributes][][cooked]', '1', preparation.cooked? %>
अब मैं विपरीत समस्या है: मैं चेकबॉक्स का चयन रद्द कर सकते हैं और तैयारी aspected के रूप में अद्यतन किया जाता है, लेकिन अगर मैं चेकबॉक्स को चेक यह पैरामीटर को खराब करता।
Parameters: {"utf8"=>"✓", "authenticity_token"=>"bGgPGbk+Cuk2q+LEgqetmk4e7xie8dB3iMP9Cj3SUm0=", "order"=>{"customer_name"=>"Duccio Armenise", "duedate"=>"2012-04-25 09:24:00.000000", "preparations_attributes"=>[{"quantity"=>"1", "description"=>"custom recipe", "kind"=>"custom", "cooked"=>"", "recipe_id"=>"9", "id"=>"86", "quantities_attributes"=>[{"ingredient_id"=>"", "qty"=>"", "_destroy"=>"0"}, {"ingredient_id"=>"11", "qty"=>"5.0", "id"=>"193", "_destroy"=>"0"}], "_destroy"=>"0"}], "add_preparation"=>{"recipe_id"=>""}}, "continue"=>"Confirm", "id"=>"31"}
अब देखते हैं कि क्या एक मेस जब मैं चेकबॉक्स को चेक, से शुरू "पकाया" => "" किसी कारण रेल के लिए preparation_attributes बंद हो रहा है:
यहाँ अनियंत्रित बॉक्स के लिए तैनात पैरामीटर हैं हैश बहुत जल्दी!
Parameters: {"utf8"=>"✓", "authenticity_token"=>"bGgPGbk+Cuk2q+LEgqetmk4e7xie8dB3iMP9Cj3SUm0=", "order"=>{"customer_name"=>"Duccio Armenise", "duedate"=>"2012-04-25 09:24:00.000000", "preparations_attributes"=>[{"quantity"=>"1", "description"=>"custom recipe", "kind"=>"custom", "cooked"=>""}, {"cooked"=>"1", "recipe_id"=>"9", "id"=>"86", "quantities_attributes"=>[{"ingredient_id"=>"", "qty"=>"", "_destroy"=>"0"}, {"ingredient_id"=>"11", "qty"=>"5.0", "id"=>"193", "_destroy"=>"0"}], "_destroy"=>"0"}], "add_preparation"=>{"recipe_id"=>""}}, "continue"=>"Confirm", "id"=>"31"}
संपादित करें # 2:
मुझे लगता है कि मैं गहरी नेस्टेड संसाधन रूपों और परम गुजर से संबंधित एक रेल बग में भाग: एक select_tag के साथ काम करने https://github.com/rails/rails/issues/5937
अब मैं इसे बनाया के लिए :
<%= select_tag 'order[preparations_attributes][][cooked]', options_for_select({yes: 1, no: 0}, preparation.cooked? ? 1 : 0) %>
मुझे लगता है कि आदेश "hidden_field पकड़ लिया" से बचने के लिए एक select_tag का उपयोग करने जा एक एक है स्वीकार्य कामकाज।
वैसे भी, उत्तर के लिए धन्यवाद!
धन्यवाद लेकिन मैं check_box_tag समाधान के बाद था क्योंकि मेरे वास्तविक कोड में मैं एक नेस्टेड संसाधन अपडेट कर रहा हूं। संपादन में मेरा वास्तविक कोड देखें। क्या आप समाधान घोंसला संसाधन फ़ॉर्म पर भी लागू होते हैं? – Darme
हाँ, यह उपयुक्त है! कुछ भी आपको 'ऑब्जेक्ट' की बजाय 'ऑर्डर [preparations_attributes] [] [पकाया]' 'जैसे कुछ पास करने से रोकता है। – jdoe
अभी के लिए मैंने एक select_tag समाधान (EDIT # 2 देखें) पर एक वर्कअराउंड स्विचिंग की है, लेकिन मैं आपके सुझाव का भी परीक्षण करने जा रहा हूं ... – Darme