12

我在一个表单(form_tag)中有几个这样的复选框:

<%=check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false)%>

并像这样更新它们:

variable = ModelName.find(params[:id])             
variable.update_attributes(params[:model_name])

这仅在一瞬间起作用,当我检查一些复选框时 - 发送它们,它们将被保存。没关系。但是当我取消选中所有复选框 - 发送表单 - 所以什么都没有发生时,在数据库表中不会在列中设置值0 ......

你能给我任何提示,如何解决它?

先感谢您

4

1 回答 1

23

发生这种情况是因为未选中的复选框不会向服务器发送任何值。为了规避这个问题,Rails 提供了check_box帮助程序,它会生成如下代码:

<input type="hidden"   name="model[attr]" value="0" />
<input type="checkbox" name="model[attr]" value="1" />

或者,插入一个隐藏字段hidden_field_tag

<%= hidden_field_tag 'model_name[column_name]', '0' %>
<%= check_box_tag 'model_name[column_name]', 1, (@data.model_name.column_name == 1 ? true : false) %>
于 2012-02-23T00:10:56.077 回答