Rails - 超类不匹配

时间:2013-03-11 18:48:18

标签: ruby-on-rails ruby inheritance model routes

使用Rails和控制器继承。

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

这是我的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

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:0)

我通过创建一个&#34; Dashboard&#34;来修复它。控制器和&#34;索引&#34; DEF。然后我编辑了我的routes.rb:

Rails.application.routes.draw do



namespace :admin do
    get '', to: 'dashboard#index', as: '/'

    resources :posts
end



end