ruby-on-rails Rails 4 -复选框和布尔字段

vbkedwbf  于 2023-05-02  发布在  Ruby
关注(0)|答案(3)|浏览(151)

我在网上看了很多关于这个问题的文章(有些在这里),但是有很多不同的建议,其中很多已经过时了,所以我今天在这里问。..
我的用户表中有一个名为admin的字段。这是一个:boolean数据类型。我也有一个复选框的形式在我的看法所谓的管理员?- 我希望能够创建TRUE和FALSE相应的表格记录时,提交的形式。
我的视图代码的一部分是:

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

我也在post_params中允许了这一点-这是必要的步骤吗?

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

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

fhg3lkii

fhg3lkii1#

不需要命名为“:admin?“
在你的表单中使用这个:

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

允许的参数如下:

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

应该可以

kokeuurv

kokeuurv2#

对于任何有一个不属于对象的形式的人来说。
我发现使用复选框语法如下:

= 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)
它给出了与上述示例相同的结果。

**Rails 5:**以上选项在Rails 5中不起作用。请使用以下命令:

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

xbp102n0

xbp102n03#

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

相关问题