2013-03-11 15 views
5

Gra z szynami i dziedziczeniem kontrolerów.Rails - niedopasowanie nadklasy

Utworzyłem kontroler o nazwie AdminController, z klasy o nazwie admin_user_controller dziecka umieszczonego w /app/controllers/admin/admin_user_controller.rb

To mój routes.rb

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

app/controllers/admin/admin_user_controller.rb

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

aplikacja/kontrolery/admin_controller.rb

class AdminController < ApplicationController 

end 

Mam model użytkownika, który będę chciał edytować z uprawnieniami administratora.

Gdy próbuję się połączyć: http://localhost:3000/admin/admin_user/

otrzymuję ten błąd:

superclass mismatch for class AdminUserController 

Odpowiedz

6

Aby ukończyć co @Intrepidd powiedział, można owinąć klasy wewnątrz modułu, tak że klasa AdminUserController nie dziedziczy się dwukrotnie z ApplicationController, tak proste obejście będzie:

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

Ten błąd pokazuje się, jeśli zdefiniować dwa razy do tej samej klasy z różnych klas nadrzędnych. Może spróbuj pomieszać w swoim kodzie class AdminUserController, aby upewnić się, że nie definiujesz go dwa razy. Istnieje ryzyko konfliktu z plikiem wygenerowanym przez Rails.

0

Naprawiłem go tworząc kontroler "Dashboard" i "indeks" def. Następnie edytowałem moje routes.rb w ten sposób:

Rails.application.routes.draw do 



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

    resources :posts 
end 



end 
Powiązane problemy