【问题标题】:Devise NoMethodError 'for' ParameterSanitizer为 ParameterSanitizer 设计 NoMethodError
【发布时间】:2016-11-07 23:45:05
【问题描述】:

每次我尝试在网络上唱歌/唱歌时都会遇到一个错误,我要发疯了。

Heroku 日志:

Started GET "/users/sign_in" for 201.235.89.150 at 2016-07-06 01:35:03 +0000
 Completed 500 Internal Server Error in 3ms (ActiveRecord: 0.0ms)
NoMethodError (undefined method `for' for #<Devise::ParameterSanitizer:0x007f5968e0a920>):
 app/controllers/application_controller.rb:11:in `configure_permitted_parameters'

application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  before_filter :configure_permitted_parameters, if: :devise_controller?

    protected

        def configure_permitted_parameters
            devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :provider, :uid) }
            devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :current_password) }
        end
end

问题是它在本地运行良好。它只是在 Heroku 上。而且几天前它工作得很好。

【问题讨论】:

  • 看看这个。也许它可以帮助你。 stackoverflow.com/questions/19791531/…
  • 几天前你说它运行良好是指在heroku上?我会尝试在 heroku 上获得一个新的 gemset 并重新启动 dynos 看看是否有帮助。
  • 在 Heroku 上,我的设计 gem 已更新到 4.2,因此“.for”不再起作用。正如@EddeAlmeida 建议的那样,我已改为“.permit”。虽然,现在我对此有其他问题。谢谢大家。

标签: ruby-on-rails ruby heroku devise


【解决方案1】:
class ApplicationController < ActionController::Base    
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email])
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :phone, :email, bank_attributes: [:bank_name, :bank_account]])
  end
end

".for 方法在 4.1 + 中已弃用

第一个参数是动作名称。 :sign_up 用于创建新的 Devise 资源(例如用户), :account_update 用于编辑/更新资源。

第二个参数 :keys 包含您允许的参数数组。

如果你想要nested_attributes,在:account_update中有一个例子,你放一个单独的数组,键是_attributes。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多