2010-09-10 8 views
9

Je migre la majorité de mon application vers l'espace de nom d'administrateur et, bien qu'il existe de nombreux guides liés à ce domaine, je ne parviens toujours pas à les gérer. Je suis principalement suivi this answer, avec tous les résultats que Google soulève (ils ont tous tendance à être d'accord). Quelqu'un pourrait-il me dire ce que je fais de mal pour ne pas perdre plus de sommeil?Rails 3 Admin, espace de noms Problème

Voici le message d'erreur:

mauvais module de type d'argument (classe attendue)

app/controllers/application_controller.rb:1:in `<top (required)>' 
app/controllers/admin/admin_controller.rb:1:in `<top (required)>' 
app/controllers/admin/home_controller.rb:1:in `<top (required)>' 

de routes.rb

namespace :admin do 
    root :to => "home#index" 

    resources :users 
end 

admin/admin_controller. rb

class Admin::AdminController < ApplicationController 

admin/home_controller.rb

class Admin::HomeController < Admin::AdminController 

admin/users_controller.rb

class Admin::UsersController < Admin::AdminController 

Je suis sûr que c'est la plupart du temps quelque chose de simple à lié au module et l'interaction du contrôleur, donc je n'ai pas inclus d'autre code. Cependant, j'aurais dû trouver la solution maintenant et s'il vous plaît laissez-moi savoir si un code supplémentaire est nécessaire.

Merci.

+1

Il semble correct pour moi ... – Arkan

+0

peut-être classe Admin :: AdminController <:: ApplicationController –

Répondre

0

Peut-être avez-vous défini quelque chose comme Admin constante?
Essayez une nouvelle application avec la même structure, puis ajouter des morceaux de l'actuelle et voir où il se brise (pas si belle suggestion, hein?).

J'utilise la même organisation pour admin comme vous avez collé ...

0

« mauvais module de type d'argument (classe attendue) »

Cela signifie que vous définissez une « classe », mais ce nom est déjà défini comme un «module» ailleurs. Rechercher ce que cela pourrait être ...

3

Je vous suggère de renommer Admin::AdminController en Admin::BaseController.

0

Puis-je suivre le code ci-dessous, Vos contrôleurs vont bien, pouvez-vous utiliser les routes que j'ai spécifié ici.

class Admin::AdminController < ApplicationController 


class Admin::UsersController < Admin::AdminController 

Ceci est la même chose que ce que vous avez écrit, je pense.

namespace :admin do 
    resources :users do as_routes end 
end 
root :to => "home#index" 
6

j'ai rencontré le problème inverse « mauvais type d'argument de classe (Module attendu) » et il est avéré qu'il y avait une aide définie comme une classe au lieu d'un module, donc essayez de rechercher des classes qui sont par inadvertance définies comme modules . Comme un contrôleur défini comme un module.

+0

Merci beaucoup. : P m'a aidé. – rewolf

0

@Russell, je me suis ce problème ayant créé le modèle AdminHelper (destiné à contenir des messages d'aide admin) :)

attention à nommer les choses!

0

J'ai rencontré un tel problème lorsque j'ai utilisé has_attached_file de paperclip avec des paramètres non valides.