Rails – 超类不匹配

使用Rails和控制器inheritance。

我创建了一个名为AdminController的控制器,在/app/controllers/admin/admin_user_controller.rb放置了一个名为admin_user_controller的子类。

这是我的routes.rb

  namespace :admin do resources :admin_user # Have the admin manage them here. end 

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

 class AdminUserController < AdminController def index @users = User.all end end 

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

 class AdminController < ApplicationController end 

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

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

我收到此错误:

 superclass mismatch for class AdminUserController 

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

 module Admin class AdminUserController < AdminController def index @users = User.all end end end 

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

我通过创建一个“仪表板”控制器和一个“索引”def来修复它。 然后我编辑了我的routes.rb:

 Rails.application.routes.draw do namespace :admin do get '', to: 'dashboard#index', as: '/' resources :posts end end