当用户进行注册并按下注册时出现此错误
undefined method `for' for #<Devise::ParameterSanitizer:0x007fe4c2821988> Did you mean? fork
}
elsif params[:action] == 'create'
devise_parameter_sanitizer.for(:sign_up) {
|u| u.permit(registration_params)
}
end
这是我的应用程序控制器
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_devise_permitted_parameters, if: :devise_controller?
protected
def configure_devise_permitted_parameters
registration_params = [
:first_name, :last_name, :address, :gender, :DOB,
:email, :password, :password_confirmation,
:image, :thumb, :medium
]
if params[:action] == 'update'
devise_parameter_sanitizer.for(:account_update) {
|u| u.permit(registration_params << :current_password)
}
elsif params[:action] == 'create'
devise_parameter_sanitizer.for(:sign_up) {
|u| u.permit(registration_params)
}
end
end
end
我可以知道问题是什么以及如何解决它
答案 0 :(得分:1)
要解决此问题,请在代码中将for
替换为permit
。
<强>解释强>
Devise :: ParamsSanitizer上的方法#for
已在设计4.2中删除,并替换为两个新方法#sanitize
和#permit
。
#permit
接受一个块参数,所以它可能就是你想在这里使用的。
见:
https://github.com/plataformatec/devise/blob/v4.2.0/CHANGELOG.md#420---2016-07-01
https://github.com/plataformatec/devise/blob/v4.2.0/lib/devise/parameter_sanitizer.rb#L108
答案 1 :(得分:0)
您可以使用此代码进行参考,并更改您想要的用户表中列名的params
。我正在使用username
在application_controller.rb
before_filter :configure_permitted_parameters, if: :devise_controller?
###### PROTECTED METHODS #######################
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:account_update) << :username
devise_parameter_sanitizer.for(:sign_up) << :username
end
希望这会有所帮助:)
答案 2 :(得分:0)
您在注册时间方面遇到问题,因此允许这种方式使用params。还要检查设备gem上的强参数。
before_filter :update_sanitized_params, only: [:create], if: :devise_controller?
protected
def update_sanitized_params
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:first_name, :last_name, :address, :gender, :DOB,:email, :password, :password_confirmation,:image, :thumb, :medium)}
end
答案 3 :(得分:0)
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_devise_permitted_parameters, if: :devise_controller?
protected
def configure_devise_permitted_parameters
registration_params = [
:first_name, :last_name, :address, :gender, :DOB,
:email, :password, :password_confirmation,
:image, :thumb, :medium
]
if params[:action] == 'update'
devise_parameter_sanitizer.for(:account_update) {
|u| u.permit(registration_params << :current_password)
}
elsif params[:action] == 'create'
def configure_devise_permitted_parameters
devise_parameter_sanitizer.fot(:sign_up).push(registration_params)
end
end
end
端