Rails 3 - 如何保存(取消)选中的复选框?

时间:2012-02-22 23:59:17

标签: ruby-on-rails-3 forms model checkbox update-attributes

我的表单( 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 ......

你可以给我任何提示,如何解决?

提前谢谢

1 个答案:

答案 0 :(得分:21)

这是因为未选中的复选框不会向服务器发送任何值。绕过这个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) %>
相关问题