我已经看过网上有很多不同的文章(有些在这里)关于这个问题,但是有很多不同的建议,其中很多已经过时,它引导我今天在这里问...
我的Users表中有一个名为admin的字段?这是一个:布尔数据类型。我的视图中的表单中还有一个名为admin的复选框? - 我希望能够在提交表单时在表记录中相应地创建TRUE和FALSE。
我的观看代码的一部分是:
Admin User? <%= f.check_box :admin? %>
此外,我已经在post_params中允许这一点 - 这是必要的步骤吗?
params.require(:staff).permit(:name, :email, :password, :password_confirmation, :admin?)
当我提交表格时,管理员?字段不受影响。任何建议都将不胜感激。
答案 0 :(得分:17)
无需将其命名为“:admin?”
只需在表单中使用:
Admin User? <%= 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。