Rails - 超类不匹配

Phi*_*lip 5 ruby inheritance routes model ruby-on-rails

使用Rails和控制器继承.

我创建了一个名为的控制器AdminController,其中有一个名为admin_user_controllerplace 的子类/app/controllers/admin/admin_user_controller.rb

这是我的routes.rb

  namespace :admin do
    resources :admin_user # Have the admin manage them here.
  end
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/管理/ admin_user_controller.rb

class AdminUserController < AdminController
  def index
    @users = User.all
  end
end
Run Code Online (Sandbox Code Playgroud)

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

class AdminController < ApplicationController

end
Run Code Online (Sandbox Code Playgroud)

我有一个用户模型,我想用管理员权限编辑.

当我尝试连接到: http://localhost:3000/admin/admin_user/

我收到此错误:

superclass mismatch for class AdminUserController
Run Code Online (Sandbox Code Playgroud)

Int*_*idd 8

如果您使用不同的超类定义两次相同的类,则会显示此错误.也许尝试class AdminUserController在代码中使用grepping ,这样你就可以确定你没有定义它两次.有可能与Rails生成的文件发生冲突.


eps*_*nes 6

要完成@Intrepidd所说的内容,你可以将你的类包装在一个模块中,这样AdminUserController该类就不会继承两次ApplicationController,所以一个简单的解决方法是:

module Admin
  class AdminUserController < AdminController
    def index
      @users = User.all
    end
  end
end
Run Code Online (Sandbox Code Playgroud)