2013-03-11 46 views
5

Railsとコントローラの継承で遊ぶ。Rails - スーパークラスの不一致

私はこれは私のroutes.rbを

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

アプリ/コントローラ/管理/ admin_user_controller.rb

ある /app/controllers/admin/admin_user_controller.rb

に置かadmin_user_controllerと呼ばれる子クラスとAdminControllerと呼ばれるコントローラを、作成しました

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

app/controllers/admin_controller.rb

class AdminController < ApplicationController 

end 

管理者権限で編集したいユーザーモデルがあります。

私がに接続しよう:私はこのエラーを受け取るhttp://localhost:3000/admin/admin_user/

superclass mismatch for class AdminUserController 

答えて

6

AdminUserControllerクラスはApplicationControllerから2回継承しないように、あなたはそう簡単な回避策は次のようになり、モジュール内のクラスをラップすることができます:私はそれを修正

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

あなたが別のスーパーで2回同じクラスを定義する場合、このエラーが表示されます。たぶんあなたのコードでclass AdminUserControllerをgreppingしようとするので、あなたはそれを2回定義していないと確信しています。 Railsによって生成されたファイルと競合する可能性があります。 @Intrepiddが言ったことを完了するには

0

"Dashboard"コントローラと "index" defを作成します。私はその後、自分のルートを編集しました:

Rails.application.routes.draw do 



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

    resources :posts 
end 



end