我正在使用带有设计的rails 4中的布尔复选框运行服务条款验证,我看到params被传递但我的验证仍然会引发错误。
html.erb
<%= check_box_tag(:agree) %>
<%= label_tag(:agree, "I Agree") %>
devise_permitted_parameters.rb
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :first_name << :last_name << :agree
devise_parameter_sanitizer.for(:account_update) << :first_name << :last_name
end
如果我在模型中执行此操作,则无效:
validates_acceptance_of :agree, :allow_nil => false, :accept => true, :on => :create
服务器:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"VfMsm8nigtdMDh/jo6SyU8mUt5LIWlz0ymuiJwl4qFY=",
"user"=>{"first_name"=>"c", "last_name"=>"c", "email"=>"abc@def.com", "password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"}, "agree"=>"1", "commit"=>"Register"}
Unpermitted parameters: first_name, last_name
我不知道为什么我有不允许的参数...只有在我提交提交表格时才会出现。
如果我从其他帖子中使用此建议,它会通过,但如果未选中同意框,它也允许注册:
validates_inclusion_of :agree, :in => [true, false]
答案 0 :(得分:0)
在查看代码之后,我意识到使用了form_for,这就是为什么form_tag语法没有按预期工作的原因。它还说明了为什么它仍然输出提交的信息。
我仍然不能100%确定为什么有名字的未授权参数。我认为解决各种问题是一个cookie问题,如果你重新启动服务器它又好了。
希望这可以节省其他人的时间。