NameError(未定义的局部变量或方法`devise_parameter_sanitizer'

时间:2013-05-17 15:37:15

标签: ruby-on-rails ruby-on-rails-3 devise controller

我正在使用设计进行用户身份验证。但是,当用户尝试创建帐户时,我收到此错误:

NameError (undefined local variable or method `devise_parameter_sanitizer' 

这就是我的设计注册控制器的样子:

def sign_up_params
devise_parameter_sanitizer.for(:sign_up)
end

有什么想法吗?

提前致谢

4 个答案:

答案 0 :(得分:6)

尝试使用rails4分支

gem 'devise', github: 'plataformatec/devise', branch: 'rails4'

答案 1 :(得分:3)

看看Github上的设计开放问题,我发现:https://github.com/plataformatec/devise/issues/2372 - 似乎为我做了诀窍。请注意,这可能是轨道4问题。

答案 2 :(得分:2)

对于任何以错误结束

的人
undefined method `<<' for {}:ActionController::Parameters

您需要像this comment一样升级到Devise 3.1.0.rc 这基本上意味着使用主分支版本

gem 'devise', git: 'git://github.com/plataformatec/devise.git'
希望我像过去半小时那样帮助一些失去的灵魂。

答案 3 :(得分:1)

在撰写本文时,最新发布的Gem for Devise是2.2.4。这不包括devise_parameter_sanitizer方法,因此您看到错误。

您可能正在https://github.com/plataformatec/devise关注Devise手册。最近添加了关于Rails 4和Strong Parameters的部分。

您有几个选择:

  1. 使用bundler获取Devise的最新主版本,以便devise_parameter_sanitizer方法可用:

    gem 'devise', :git => 'git://github.com/plataformatec/devise.git'

  2. 不要将ActiveModel::ForbiddenAttributesProtection应用于您的用户模型,因此甚至不使用强参数。更多信息:Devise and Strong Parameters

  3. 直接覆盖所需的Devise控制器。见这里:https://gist.github.com/kazpsp/3350730