validates_acceptance_of 不适用于复选框

validates_acceptance_of not working for a checkbox

我在过去三个小时里尝试了各种选项来使 "terms and conditions" 复选框正常工作

这是我的代码 /models/user.rb

class User < ActiveRecord::Base
  #validates :terms, acceptance: { accept: true } , :on => :create
  validates_acceptance_of :terms, :allow_nil => false,  :accept => true, :on => :create
end

这就是我一直得到的

html 看起来像这样

我添加这个是为了允许参数

class ApplicationController < ActionController::Base

  before_action :configure_permitted_parameters, if: :devise_controller?
  # for allowing terms in signup 
  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:terms])
  end

end

'rails', '4.2.8'

您将 1 作为复选框值传递。这是验证器的默认值。所以你需要做的就是去掉 :accept => true 选项。 true 仅在验证布尔数据库字段时使用。据我了解,您在用户 table 中没有这样的列,只想引用 HTML 复选框。