【问题标题】:Devise Parameter Sanitizer "For" Method Not Found Rails 5设计参数消毒剂“For”方法未找到 Rails 5
【发布时间】:2016-07-19 02:23:12
【问题描述】:

我刚刚将设计添加到我闪亮的新 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. 重启服务器

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

【问题讨论】:

  • 你试过 .permit 方法了吗devise_parameter_sanitizer.permit() .for 方法已被弃用,现在它是来自设计 4.1+ 的 .permit

标签: devise ruby-on-rails-5


【解决方案1】:

.for 方法已弃用,从设计 4.1+ .permit 方法可用

试试.permit. 应该可以的。

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

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    @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
    

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2021-03-06
      • 1970-01-01
      相关资源
      最近更新 更多