此代码: = form_fo:store_products do | f | = f.check_box:track_inventory
创建这个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">
第一个隐藏元素的原因是什么?
答案 0 :(得分:22)
HTML规范说未经检查的复选框不应由webbrowsers发送。这意味着,如果未选中,则rails不会收到表单上的复选框是否未选中的记录。这很重要,例如,如果用户正在编辑一个先前已选中复选框的记录,并且他们已决定取消选中它 - rails不会知道更新此属性。
隐藏字段与复选框具有相同的名称,因此如果未发送复选框,则会发送hidden_field(值为'0',表示未选中)。这样,rails将始终收到有关复选框是选中还是未选中的信号。
有关此问题的更多信息,请访问APIDock