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
类就不会从ApplicationController
inheritance两次,所以一个简单的解决方法是:
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