2012-07-18 55 views
7

此代碼: = form_fo:store_products do | f | = f.check_box:track_inventory爲什麼check_box表單助手會生成兩個複選框,一個隱藏?

創建這個網站:

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

什麼是第一個隱藏元素的原因是什麼?

+0

我認爲你有一個錯字。嘗試'form_for'而不是'form_for'。 – Dougui 2012-07-18 22:06:02

回答

21

HTML規範說明未選中的複選框不應該由webbrowsers發送。這意味着,如果未選中,rails將不會收到表單上覆選框未選中的記錄。這很重要,例如,如果用戶正在編輯一個記錄,其中複選框先前已被選中,並且他們已經決定取消選中記錄 - rails會不知道更新此屬性。

隱藏字段的名稱與複選框相同,因此如果未發送複選框,則會發送hidden_​​field(值爲'0',表示未選中)。這樣,rails總是會收到關於複選框是選中還是未選中的信號。

關於這個問題的更多信息APIDock

相關問題