繁体   English   中英

Rails 4 - 复选框和布尔字段

[英]Rails 4 - Checkbox and Boolean Field

我在网上查看了很多关于这个问题的不同文章(一些在这里),但是有很多不同的建议,其中很多已经过时了,这让我今天在这里问......

我的用户表中有一个名为 admin 的字段? 这是一种 :boolean 数据类型。 我的视图中的表单中还有一个名为 admin 的复选框? - 我希望能够在提交表单时在表记录中相应地创建 TRUE 和 FALSE。

我的部分视图代码是:

Admin User&#63; <%= f.check_box :admin? %>

我也在我的 post_params 中允许这样做 - 这是必要的步骤吗?

params.require(:staff).permit(:name, :email, :password, :password_confirmation, :admin?)

当我现在提交表单时,管理员? 场不受影响。 任何建议将不胜感激。

无需将其命名为“:admin?”

只需在您的表单中使用它:

Admin User&#63; <%= f.check_box :admin %>

和允许的参数是这样的:

params.require(:staff).permit(:name, :email, :password, :password_confirmation, :admin)

那应该工作。

对于任何拥有不属于对象的形式的人。

我发现使用复选框语法,如:

= check_box 'do_this', '', {}, 'true', 'false'

然后在控制器端:

ActiveRecord::ConnectionAdapters::Column.value_to_boolean(params[:do_this])

会给你正确的do_this布尔值。

例子:

[1] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("true")
=> true
[2] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("false")
=> false
[3] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("1")
=> true
[4] pry(main)> ActiveRecord::ConnectionAdapters::Column.value_to_boolean("0")
=> false

编辑:以上已弃用,请使用:

ActiveRecord::Type::Boolean.new.type_cast_from_database(value)

它给出了与上述示例相同的结果。

导轨 5

上述选项在 Rails 5 中不起作用。相反,请使用以下内容:

ActiveRecord::Type::Boolean.new.cast(value)

您可能没有允许您的控制器通过 params 接受 admin 字段。 换句话说,强参数的问题。 确保 :admin 在您的 model_params 中是允许的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM