2013-08-16 3 views
8

ich zu einer Gruppe möchte alle meine Controller und ihre Ansichten in Ordnern zum Beispiel unter „admin“Rails 4: Gruppieren von Controllern in einem Ordner

Das, was ich tat:
(1) Ich zog alle controllers unter ein Ordner admin
(2) ich zog alle views unter einem Ordner admin

(3) las ich in Rails-Führer, dass ich dies tun soll:

scope module: 'admin' do 
    resources :admin_permissions, :admin_layout, :admin_db 
end 

aber ich erhalte eine Fehler

ActionController::RoutingError at /admin_permissions/index 
uninitialized constant AdminMainController 

Verzeichnisstruktur:

controllers 
    -> admin 
    -> admin_main_controller 
    -> admin_permissions_controller 
    -> admin_layouts_controller 
    -> admin_db_controller 
views 
    -> admin 
    -> admin_main 
    -> admin_permissions 
    -> admin_layouts 
    -> admin_db 

Alle ersten drei Controller von admin_main erben, die sich aus der Anwendung erbt

Jede beraten, was zu lesen/Check?

Antwort

8

Wenn Sie rake routes ausführen, werden Sie feststellen, dass die Namen all Ihrer Controller mit dem Präfix 'admin /' versehen sind.

Da Sie Ihre Controller in das Verzeichnis "admin" verschieben, sollten Sie jedem Controller dort einen Namespace hinzufügen. Zum Beispiel:

class Admin::AdminMainController < ActionController::Base 
end 

Und überprüfen Sie Ihre Controller, Ansichten und Helfer, aktualisieren Sie alle relevanten Pfade und Controller-Namen.

+0

Danke !! Ich habe es überall hinzugefügt, schließe ich es auch ein, wenn ich einen Helfer importiere? "include Admin :: AdminMainHelper" oder einfach "include AdminMainHelper" – nevermind

+0

Je nachdem, was der Modulname Ihres Helfers ist. Wenn der Name "Admin :: AdminMainHelper" ist, also "include Admin :: AdminMainHelper" oder "include AdminMainHelper" – Bigxiang

+0

es funktioniert jetzt! mit Admin :: AdminMainHelper – nevermind