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

Posted

技术标签:

【中文标题】NameError(未定义的局部变量或方法 `devise_parameter_sanitizer\'【英文标题】:NameError (undefined local variable or method `devise_parameter_sanitizer'NameError(未定义的局部变量或方法 `devise_parameter_sanitizer' 【发布时间】:2013-05-17 15:37:15 【问题描述】:

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

NameError (undefined local variable or method `devise_parameter_sanitizer' 

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

def sign_up_params
devise_parameter_sanitizer.for(:sign_up)
end

有什么想法吗?

提前致谢

【问题讨论】:

是的,我也遇到了同样的问题,你找到解决办法了吗? 我也在经历这个 你能添加 bundle exec gem list 输出吗 【参考方案1】:

尝试使用 rails4 分支

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

【讨论】:

【参考方案2】:

查看 Github 上的设计未解决问题,我发现:https://github.com/plataformatec/devise/issues/2372 - 似乎对我有用。请注意,这可能是 rails 4 的问题。

【讨论】:

在rails 3.2.x上体验它 你是最新的设计版本吗?【参考方案3】:

对于任何最终出现错误的人

undefined method `<<' for :ActionController::Parameters

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

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

希望我能像过去半小时一样帮助一些迷失的灵魂。

【讨论】:

【参考方案4】:

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

您可能正在关注https://github.com/plataformatec/devise 的设计手册。最近添加了 Rails 4 和强参数部分。

你有几个选择:

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

    gem 'devise', :git =&gt; 'git://github.com/plataformatec/devise.git'

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

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

【讨论】:

以上是关于NameError(未定义的局部变量或方法 `devise_parameter_sanitizer'的主要内容,如果未能解决你的问题,请参考以下文章

Action Mailer NameError:未定义的局部变量或方法“smtp”

FastlaneCore::Helper::AppcenterHelper:Class (NameError) 的未定义局部变量或方法“所有者”

nameerror 未定义的局部变量或方法 `log_out' 你的意思是? logout_url ruby​​ on rails

ruby NameError:未定义的局部变量或StartupMailer的方法`respond_to_new_founder':Class; def之前的空格问题(如char)

JBuilder中未定义的局部变量或方法“json”

Puma 未定义的局部变量或方法“守护进程”错误