设计参数消毒器 "For" 未找到方法 Rails 5

Devise Parameter Sanitizer "For" Method Not Found Rails 5

我刚刚在闪亮的新 Rails 5 应用程序中添加了设计。在我尝试将用户名添加到 Devise 用户模型之前,一切都很好。一切正常,直到我 运行 它并转到 localhost:3000/users/sign_up,在那里我遇到了这个错误:

undefined method `for' for #<Devise::ParameterSanitizer:0x007fa0dc31c1b0> Did you mean? fork

我在Google的妙处搜索过任何结果,只给出过时的,Rails 4个错误和解决方案,与搜索Stack Overflow本身相同。我无法找到可行的解决方案。非常感谢帮助。以下是我为此做的准备:

  1. 创建迁移:rails generate migration add_username_to_users username:string:uniq
  2. 迁移数据库rake db:migrate
  3. 向应用程序控制器添加强参数devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(..) }
  4. 将用户名参数添加到设计视图
  5. 重启服务器

我有什么遗漏或做错了什么吗?

.for 方法已弃用,从 devise 4.1+ 开始,.permit 方法可用

试试.permit.应该可以。

devise_parameter_sanitizer.permit(:my_action) { |u| u.permit(..) }

希望这对您有所帮助:)

@Shadow 很好地提到了这个问题,但这个语法对我有用:

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