为什么check_box表单助手会生成两个复选框,一个隐藏?

此代码:= form_fo:store_products do | f | = f.check_box:track_inventory

创建这个HTML:

  

第一个隐藏元素的原因是什么?

HTML规范说不应该由webbrowsers发送未选中的复选框。 这意味着,如果未选中,则rails不会收到表单上的复选框是否未选中的记录。 这很重要,例如,如果用户正在编辑先前已选中复选框并且他们已决定取消选中该复选框的记录,则rails将无法更新此属性。

隐藏字段与复选​​框具有相同的名称,因此如果未发送复选框,则会发送hidden_​​field(值为“0”,表示未选中)。 这样,rails将始终收到有关复选框是选中还是未选中的信号。

有关此问题的更多信息,请访问APIDock