use*_*289 3 ruby-on-rails devise ruby-on-rails-4
我试图agreement在表单上包含一个"接受服务条款"复选框(被叫).该应用程序Devise用于用户管理.
views/devise/registrations/new.html.erb 具有:
<%= f.check_box :agreement, class: 'form-control' %>
Run Code Online (Sandbox Code Playgroud)
该application_controller.rb有:
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:agreement, :phone, :first_name, :last_name, :domain, :email, :password, :password_confirmation) }
end
Run Code Online (Sandbox Code Playgroud)
然后在user.rb控制器中,它有
# neither of the below worked
# validates :agreement, :acceptance => true
validates :agreement, acceptance: true
Run Code Online (Sandbox Code Playgroud)
如果我查看数据development.log,它会显示agreement正确的字段,值为1,这是(根据Rails文档,验证的预期值):
Parameters: {"utf8"=>"?", "authenticity_token"=>"jFg6+ZDM1qldh020lv/FQHxlgZkby2dhUbejjXurr4w=", "user"=>{"first_name"=>"Joe", "last_name"=>"Smith", "phone"=>"2098993344", "domain"=>"google.com", "email"=>"test@example.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "agreement"=>"1"}, "commit"=>"Create User"}
Run Code Online (Sandbox Code Playgroud)
但是,无论何时提交表单,它都会在提交表单时显示"必须接受协议"的错误消息.
关于这是由什么引起的任何想法?
尝试使用它进行验证
validates :agreement, acceptance: { accept: true }
根据Rails文档
:accept - 指定被视为已接受的值.默认值是字符串"1",这使得与HTML复选框的关联变得容易.如果要验证数据库列,则应将此值设置为true,因为在验证之前,属性从"1"转换为true.
| 归档时间: |
|
| 查看次数: |
2805 次 |
| 最近记录: |