2012-07-18 9 views
7

questo codice: = form_fo: store_products do | f | = f.check_box: track_inventoryPerché l'helper forma check_box genera due checkbox, uno nascosto?

crea questo 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"> 

Qual è la ragione per il primo elemento nascosto?

+0

penso che tu abbia un errore di battitura. Prova 'form_for' invece' form_for'. – Dougui

risposta

21

Le specifiche HTML indicano che le caselle di controllo deselezionate non devono essere inviate dai browser. Ciò significa che, se deselezionata, le rotaie non ricevono alcuna registrazione se la casella di controllo nel modulo è stata deselezionata. Ciò sarebbe importante, ad esempio, se l'utente stava modificando un record in cui la casella di spunta era stata precedentemente controllata e avevano deciso di deselezionarla - i binari non avrebbero saputo aggiornare questo attributo.

Il campo nascosto ha lo stesso nome della casella di controllo, quindi se la casella di controllo non viene inviata, il campo hidden viene inviato invece (con il valore di '0', che significa deselezionato). In questo modo, i binari riceveranno sempre un segnale se la casella è stata selezionata o deselezionata.

Ulteriori informazioni su questo Gotcha a APIDock

Problemi correlati