2012-02-22 15 views
9

mam w takiej postaci (form_tag) Kilka odpowiednie kwadraty, takie jak ten:Szyny 3 - jak zapisywać (od) zaznaczone pola wyboru?

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

i aktualizując je jak:

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

ta działa tylko w momencie, kiedy sprawdzić kilka pól wyboru - wyślij oni i będą zbawieni. W porządku. Ale kiedy zaznaczenie wszystkich pól wyboru - wyślij formularz - więc nic nie stało, w tabeli DB nie będzie ustawić wartość w kolumnach ...

Czy możesz dać mi jakieś końcówki, jak to naprawić?

góry dziękuję

Odpowiedz

20

Dzieje się tak, ponieważ zaznaczone pole wyboru nie wyśle ​​żadnej wartości do serwera. Aby obejść ten Rails dostarcza check_box pomocnika, który generuje kod tak:

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

Alternatywnie, włóż ukryte pole z 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

dzięki, ale ukryte wejście musi być przed polem wyboru, w Sekwencja podczas pisania nie działa – user984621

+0

Ta metoda działa, ale dla mnie mam '<% = hidden_field_tag ​​'nazwa_modelu [nazwa_kolumny]'%>' i przechowuje pusty zestaw cytatów na początku tablicy. .. Jak mogę pozbyć się dodatkowych pustych ofert? – Gcap