[英]Rails 4 - Checkbox and Boolean Field
我在网上查看了很多关于这个问题的不同文章(一些在这里),但是有很多不同的建议,其中很多已经过时了,这让我今天在这里问......
我的用户表中有一个名为 admin 的字段? 这是一种 :boolean 数据类型。 我的视图中的表单中还有一个名为 admin 的复选框? - 我希望能够在提交表单时在表记录中相应地创建 TRUE 和 FALSE。
我的部分视图代码是:
Admin User? <%= f.check_box :admin? %>
我也在我的 post_params 中允许这样做 - 这是必要的步骤吗?
params.require(:staff).permit(:name, :email, :password, :password_confirmation, :admin?)
当我现在提交表单时,管理员? 场不受影响。 任何建议将不胜感激。
无需将其命名为“:admin?”
只需在您的表单中使用它:
Admin User? <%= 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.