Rails 4 - 复选框和布尔字段

时间:2013-09-08 14:08:52

标签: ruby-on-rails

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

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

我的观看代码的一部分是:

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

此外,我已经在post_params中允许这一点 - 这是必要的步骤吗?

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

当我提交表格时,管理员?字段不受影响。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:17)

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

只需在表单中使用:

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

允许的参数如下:

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

这应该有效。

答案 1 :(得分:4)

对于任何形式不属于某个对象的人。

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

= 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)

它提供与上述示例相同的结果。

答案 2 :(得分:0)

您可能不允许控制器通过参数接受管理字段。换句话说,一个强参数的问题。确保:model_params中允许使用admin。