类RegistrationController的超类不匹配 - 覆盖设计控制器

Ric*_*son 3 ruby-on-rails devise ruby-on-rails-4

我试图覆盖我的设计注册控制器,没有运气.

我终于让路线工作了,但现在我收到了一个superclass mismatch for class错误.

继承人我的设置:

注册控制器(app/controllers/users/registrations_controller.rb)

class RegistrationsController < Devise::RegistrationsController

  def sign_up_params
    devise_parameter_sanitizer.sanitize(:sign_up)
    params.require(:user).permit(:email, :password, profile_attributes: [:username])
  end

  def new
    super
  end

  def create

  end

  def update
    super
  end

end
Run Code Online (Sandbox Code Playgroud)

路线

root 'welcome#index'

devise_for :users, :controllers => {:registrations => "users/registrations"}
Run Code Online (Sandbox Code Playgroud)

查看

- edit.html.erb&& new.html.erb存在于文件夹中(app/views/users/registrations)

用户模型(以防万一)

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_one :profile
  accepts_nested_attributes_for :profile

  def profile
    super || build_profile
  end

end
Run Code Online (Sandbox Code Playgroud)

知道为什么会出现这个错误吗?

谢谢!

Wat*_*Box 11

您的控制器位于users目录下,但没有Users模块(您可能会说,它不在Users命名空间中).将控制器更改为:

module Users
  class RegistrationsController < Devise::RegistrationsController
  ...
  end
end
Run Code Online (Sandbox Code Playgroud)

或者将控制器移到目录中

应用程序/控制器/ registrations_controller.rb