2012-07-18 12 views
7

ten kod: = form_fo: store_products do | f | = f.check_box: track_inventoryDlaczego check_box tworzą pomocnika wygenerować dwa pola wyboru, jeden ukryty?

tworzy ten HTML:

<input name="product_group[products_attributes][0][store_products_attributes}[1342647745501][track_inventory]" type="hidden" value="0"> 

<input id="product_group_products_attributes_0_store_products_attributes_1342647745501_track_inventory" name="product_group[products_attributes][0][store_products_attributes][1342647745501][track_inventory]" type="checkbox" value="1"> 

Co jest powodem, dla pierwszego ukrytego elementu?

+0

myślę, że masz literówkę. Wypróbuj 'form_for' zamiast' form_for'. – Dougui

Odpowiedz

21

Specyfikacja HTML mówi, że niezaznaczone pola wyboru nie powinny być wysyłane przez przeglądarki internetowe. Oznacza to, że jeśli nie jest zaznaczone, szyny nie otrzymują żadnych informacji o tym, czy pole wyboru w formularzu nie zostało zaznaczone. Byłoby to ważne, na przykład, gdyby użytkownik edytował rekord, w którym wcześniej zaznaczono pole wyboru i zdecydował się usunąć zaznaczenie - tory nie będą mogły zaktualizować tego atrybutu.

Ukryte pole ma tę samą nazwę, co pole wyboru, więc jeśli pole wyboru nie zostanie wysłane, zamiast tego zostanie wysłane hidden_field (z wartością "0", co oznacza odznaczenie). W ten sposób szyny zawsze otrzymają sygnał, czy pole wyboru zostało zaznaczone, czy odznaczone.

Więcej informacji na ten temat haczyka na APIDock