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 复选框。
我在过去三个小时里尝试了各种选项来使 "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
您将 1
作为复选框值传递。这是验证器的默认值。所以你需要做的就是去掉 :accept => true
选项。
true
仅在验证布尔数据库字段时使用。据我了解,您在用户 table 中没有这样的列,只想引用 HTML 复选框。