2013-10-09 41 views
2

我有一个复选框Ruby on Rails的复选框,不保存数据

<%= f.check_box :anonymous %> 

而我的表有一栏anonymous这是真的还是假的。在生成的HTML

代码:

<input name="comment[anonymous]" type="hidden" value="0" /> 
<input id="comment_anonymous" name="comment[anonymous]" type="checkbox" value="1" /> 

现在,由于某种原因,当我添加如果我的匿名复选框被选中或不..它不是在数据库中更改数据它不保存数据。所有其它领域得到除匿名保存外。

可能是什么问题?

+0

你能展示更多的视图代码吗?就像'f.check_box'周围的'form_for'一样? – lurker

+0

'<%= form_for(comment,:url =>(defined?(submit_url)?submit_url:[commentable,“comments”]),:method =>:post,:id =>“comment-form”,:class =>“form-horizo​​ntal”)do | f | %>' – user1736479

回答

1

使用#check_box_tag代替:

<%= check_box_tag(:anonymous) %> 

从官方指南:

阵列参数不与check_box帮手发挥出色。按照 的HTML规范取消选中复选框提交没有任何价值。 但是,对于复选框,始终提交 值通常很方便。 check_box助手通过创建一个隐藏的 输入具有相同的名称来伪造。如果取消选中该复选框,则仅提交隐藏的 输入,如果选中,则提交这两个输入,但 复选框提交的值优先。当使用数组参数 和数组参数时,这个重复的提交会混淆Rails ,因为重复的输入名称是它决定何时开始新的 数组元素的方式。最好使用check_box_tag或使用散列值而不是数组。

+0

我得到: ''未定义的方法'check_box_tag'为#'' – user1736479

+0

@ user1736479我想你做了'f.check_box_tag'。再看看我提出的解决方案:) – Agis

+0

Agis,我试过你的解决方案,它不工作。我仍然只能进入我的数据库。我正在打开这样的标签: '<%= check_box_tag:anonymous,1,false,data:{“label”=>“Želimostati anonimen”}%> – user1736479