首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails 5,行devise_parameter_sanitizer.for上#<Devise的未定义方法‘for’

Rails 5,行devise_parameter_sanitizer.for上#<Devise的未定义方法‘for’
EN

Stack Overflow用户
提问于 2016-05-20 16:40:34
回答 6查看 31K关注 0票数 100

我正在使用Rails 5

我在模型用户中添加了新的字段用户名。

代码语言:javascript
复制
class Users::RegistrationsController < Devise::RegistrationsController
  before_action :configure_permitted_parameters

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up).push(:username)  
  end
end

注册过程中显示错误:未定义#的方法‘for’你是指什么?fork

跟踪:

NoMethodError (#的未定义方法‘for’你是指?fork):

代码语言:javascript
复制
app/controllers/users/registrations_controller.rb:7:in `configure_permitted_parameters'
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_source.html.erb (5.0ms)
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.9ms)
  Rendering /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.2ms)
  Rendered /usr/local/rvm/gems/ruby-2.3.0/gems/actionpack-5.0.0.rc1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (118.1ms)

谁能帮上忙?如何解决这个问题?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-05-20 16:54:05

According to the documentation:

Devise 4的Sanitaizer参数API已更改

代码语言:javascript
复制
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
  end
end
票数 182
EN

Stack Overflow用户

发布于 2016-08-12 01:15:40

如果您只需将.for更改为.permit,它也可以正常工作。例如:

代码语言:javascript
复制
devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit({ roles: [] }, :email, :password, :password_confirmation, :username) }

它可以在Rails 4.2.x和Rails 5.0.x中运行

票数 34
EN

Stack Overflow用户

发布于 2016-07-13 07:45:15

别忘了devise_parameter_sanitizer.permit(:account_update, keys: [:username])

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37341967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档