Rails3-如何保存(未选中的)复选框



我在表单(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])

这只会在我选中一些复选框时起作用——发送它们,它们就会被保存。没关系。但是,当我取消选中所有复选框-发送表单-这样就不会发生任何事情,在DB表中,不会在列中设置值0。。。

你能给我一些建议吗?怎么修?

提前感谢

发生这种情况是因为未选中的复选框不会向服务器发送任何值。为了避免这种情况,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) %>

相关内容

  • 没有找到相关文章

最新更新