【问题标题】:Checkbox not staying checked in rails form复选框未在 Rails 表单中保持选中状态
【发布时间】:2013-06-08 13:33:06
【问题描述】:

我的form_tag 中有这个部分

%input{ :type => "checkbox", :name => "form", :value => "#{@t.form}"}

当我第一次检查它时,它会以1 的形式保存到数据库中,但是如果我导航回表单,它不会显示为选中..

【问题讨论】:

  • 你在使用 simple_form 吗?
  • 不,我正在使用 form_tag
  • 检查更新的答案。
  • 你试过我的最新更新了吗?

标签: ruby-on-rails forms checkbox haml


【解决方案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,并且表单是数据库中的布尔字段。

【讨论】:

  • 这总是以null 形式保存到数据库中
  • 你能发布两个字段的html输出吗?
  • 现在它不会将任何内容保存到数据库中,并且始终选中该框
  • 不知道为什么,但它在呈现的 html 中将值呈现为“true”和“false”。我再次编辑了它。立即尝试。
猜你喜欢
  • 2016-06-19
  • 1970-01-01
  • 2017-08-30
  • 2020-03-31
  • 2017-12-25
  • 2012-08-25
  • 1970-01-01
  • 2019-05-25
  • 1970-01-01
相关资源
最近更新 更多