我有这个在我的一部分form_tag
%input{ :type => "checkbox", :name => "form", :value => "#{@t.form}"}
它会像我第一次检查时一样保存到数据库中1
,但是如果我导航回表单,它不会显示为选中..
我有这个在我的一部分form_tag
%input{ :type => "checkbox", :name => "form", :value => "#{@t.form}"}
它会像我第一次检查时一样保存到数据库中1
,但是如果我导航回表单,它不会显示为选中..
首先,这不是在 Rails 中添加表单和字段的推荐方式。但是,仍然要回答您的问题,您可以这样做:
%input{ :type => "checkbox", :name => "form", :value => true, :checked => @t.form ? "checked" : ""}
请注意,我已将 value 部分更改为,true
因为它是复选框的 value 属性,它将始终具有相同的值。
现在还有另一个问题,如果之前选中了复选框,现在您取消选中它并保存表单,那么它将不会在数据库中保存 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,并且表单是数据库中的布尔字段。