2010-09-10 13 views
9

Ich migriere die Mehrheit meiner Anwendung in den Admin-Namespace und während es viele Leitfäden dazu gibt, kann ich immer noch nicht verwalten. Ich habe hauptsächlich this answer verfolgt, zusammen mit allen Ergebnissen, die Google bringt (sie alle stimmen dem zu). Könnte mir bitte jemand sagen, was ich falsch mache, damit ich keinen Schlaf mehr verliere? HierRails 3 Admin-Namespace Problem

ist die Fehlermeldung:

falsche Argument Typ-Modul (erwartete Klasse)

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)>' 

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 

Ich bin meistens sicher, dass es etwas einfach im Zusammenhang mit dem Modul ist und Controller-Interaktion, so habe ich keinen anderen Code enthalten. Allerdings hätte ich die Lösung schon gefunden und bitte lassen Sie mich wissen, ob zusätzlicher Code benötigt wird.

Danke.

+1

Es scheint richtig für mich ... – Arkan

+0

vielleicht Klasse Admin :: AdminController <:: ApplicationController –

Antwort

0

Vielleicht haben Sie etwas definiert als Admin Konstante?
Versuchen Sie eine neue App mit der gleichen Struktur, fügen Sie dann Stücke aus der aktuellen und sehen, wo es bricht (nicht so gut Vorschlag, nicht wahr?).

ich die gleiche Organisation für Admin verwenden, wie Sie klebte ...

0

„falschen Argument Typ-Modul (erwartete Klasse)“

Das bedeutet, Sie definieren eine ‚Klasse‘, aber dieser Name ist bereits definiert als "Modul" woanders. Suche nach dem, was das sein könnte ...

3

Ich würde vorschlagen, dass Sie Admin::AdminController zu Admin::BaseController umbenennen.

0

Können Sie den folgenden Code befolgen, Ihre Controller sind in Ordnung, können Sie die Routen verwenden, die ich hier angegeben habe.

class Admin::AdminController < ApplicationController 


class Admin::UsersController < Admin::AdminController 

Das ist das gleiche wie das, was Sie geschrieben haben, denke ich.

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

begegnete ich das umgekehrte Problem „falschen Argument Typ Klasse (erwartete Module)“ und es stellte sich heraus, ein Helfer als Klasse statt eines Moduls definiert war, so versuchen, für Klassen zu suchen, die als Module versehentlich definiert sind . Wie ein Controller, der als Modul definiert ist.

+0

Vielen Dank. : P hat mir geholfen. – rewolf

0

@Russell, habe ich dieses Problem geschaffen Modell AdminHelper mit (gemeint Admin-Hilfe-Nachrichten enthalten) :)

bei der Benennung Dinge vorsichtig sein!

0

Ich stieß auf ein solches Problem, wenn ich die has_attached_file von Paperclip mit ungültigen Parametern verwendet.