我在form_tag
%input{ :type => "checkbox", :name => "form", :value => "#{@t.form}"}
当我第一次检查它时,它会以1
的形式保存到数据库中,但如果我导航回到表单,它就不会显示检查..
答案 0 :(得分:1)
首先,这不是在rails中添加表单和字段的推荐方法。但是,仍然要回答你的问题,你可以这样做:
%input{ :type => "checkbox", :name => "form", :value => true, :checked => @t.form ? "checked" : ""}
请注意,我已将值部分更改为true
,因为它是复选框的值属性,它始终具有相同的值。
现在还有另一个问题,如果先前已选中复选框,现在您取消选中它并保存表单,那么它不会在数据库中保存false的值“0”。
根据HTML规范未选中复选框,不提交任何值。但是,复选框始终提交值通常很方便。
现在要避免此问题,您还需要添加一个隐藏字段。
%input{ :type => "hidden", :name => "form", :value => false}
%input{ :type => "checkbox", :name => "form", :value => true, :checked => @t.form ? "checked" : ""}
现在,如果取消选中该复选框,则仅提交隐藏的输入,如果已选中,则两者都已提交,但复选框提交的值优先。
注意:我建议您使用rails方法生成隐藏字段和复选框。
更新(使用form_tag帮助程序)
= hidden_field_tag('form', '0')
= check_box_tag("form", '1', @t.form)
我认为您使用的是HAML,表单是数据库中的布尔字段。