2012-02-22 16 views
9

मैं एक के रूप में है (form_tag) इस तरह कई चेकबॉक्स:रेल 3 - कैसे चेक (अन) चेकबॉक्स को सहेजने के लिए?

<%=check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false)%> 

और अद्यतन करने उन्हें पसंद:

variable = ModelName.find(params[:id])    
variable.update_attributes(params[:model_name]) 

यह केवल एक पल में काम करता है जब मैं कुछ चेक बॉक्स की जाँच - भेज उन्हें और वे बचाए जाएंगे। कोई बात नहीं। लेकिन जब मैं सभी चेक बॉक्स को अनचेक - फार्म भेज -, इसलिए कुछ भी happend डीबी तालिका में मूल्य 0 स्तंभों में सेट नहीं होगा ...

आप मुझे किसी भी टिप दे सकता है, यह कैसे तय करने के लिए?

अग्रिम

उत्तर

20

यह इसलिए होता है क्योंकि एक अनियंत्रित चेकबॉक्स सर्वर से किसी भी मूल्य नहीं भेजेंगे धन्यवाद। इस रेल को नाकाम करने के check_box सहायक है, जो इस तरह कोड उत्पन्न करता है प्रदान करता है: वैकल्पिक रूप से

<input type="hidden" name="model[attr]" value="0" /> 
<input type="checkbox" name="model[attr]" value="1" /> 

, hidden_field_tag साथ एक छिपी हुई फ़ील्ड सम्मिलित करें:

<%= hidden_field_tag 'model_name[column_name]', '0' %> 
<%= check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false) %> 
+0

धन्यवाद, लेकिन छिपे हुए इनपुट, चेकबॉक्स से पहले होना चाहिए जैसा कि आप इसे लिखते हैं, अनुक्रम मुझे काम नहीं करता है – user984621

+0

यह विधि काम करती है, लेकिन मेरे लिए मेरे पास '<% = hidden_field_tag ​​'model_name [column_name]'%> 'है और यह सरणी की शुरुआत में उद्धरणों का खाली सेट संग्रहीत करता है। .. मैं अतिरिक्त खाली उद्धरणों से कैसे छुटकारा पा सकता हूं? – Gcap

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