NameError(未定义的局部变量或方法`devise_parameter_sanitizer’
我正在使用设计进行用户身份validation。 但是,当用户尝试创建帐户时,我收到此错误:
NameError (undefined local variable or method `devise_parameter_sanitizer'
这就是我的设计注册控制器的样子:
def sign_up_params devise_parameter_sanitizer.for(:sign_up) end
有任何想法吗?
提前致谢
尝试使用rails4分支
gem 'devise', github: 'plataformatec/devise', branch: 'rails4'
看看Github上的设计开放问题我发现了这个: https : //github.com/plataformatec/devise/issues/2372 – 似乎对我有用。 请注意,这可能是一个rails 4问题。
对于任何最终错误的人
undefined method `<<' for {}:ActionController::Parameters
您需要升级到Devise 3.1.0.rc, 如此评论中所示
这基本上意味着使用master分支版本
gem 'devise', git: 'git://github.com/plataformatec/devise.git'
希望我像过去半小时那样帮助一些失去的灵魂。
在撰写本文时,最新发布的Gem for Devise是2.2.4。 这不包括devise_parameter_sanitizer
方法,因此您会看到错误。
您可能正在访问设计手册, url为https://github.com/plataformatec/devise 。 最近添加了关于Rails 4和Strong Parameters的部分。
你有几个选择:
-
使用bundler获取最新的Devise主版本,以便
devise_parameter_sanitizer
方法可用:gem 'devise', :git => 'git://github.com/plataformatec/devise.git'
-
不要将
ActiveModel::ForbiddenAttributesProtection
应用于您的用户模型,因此甚至不使用强参数。 更多信息: 设计和强参数 -
直接覆盖所需的Devise控制器。 见这里: https : //gist.github.com/kazpsp/3350730