2009-04-24 16 views
5

Entwerfen einer Web-App mit einem Admin-Bereich und einem öffentlichen Bereich. Es fühlt sich an, als ob ein Public-Face-Controller nur für "Index" und "Show" ein wenig überflüssig ist. Alle Vorschläge, die ich gelesen habe, schlagen einen Namensraum für admin vor, was in Ordnung ist. Ich frage mich nur, ob ich einen Controller mit einer zusätzlichen Aktion haben sollte, sagen wir "list_public" oder so ähnlich.Schienen - Zwei Controller oder Hinzufügen von Aktionen?

Ich bin neu mit Rails, also bin ich vielleicht nur um nichts besorgt. Ich mag einfach nicht die Idee, all diese Controller, Views, Helfer mit dem gleichen Namen über meine Projektverzeichnisse verstreut zu haben.

Hat jemand einen Einblick? Danke im Voraus.

Antwort

7

Ich würde sagen, dass beide Controller (eine öffentliche und eine Admin) die beste Lösung ist.

Jetzt können Sie beide Controller die gleiche Methode aufrufen, die die entsprechenden Aktionen in den Aktionen ausführt.

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    # Admin only stuff goes here 
    end 
end 
+0

Danke, Matt. Das macht Sinn, ich brauche nur eine Bestätigung, dass es nicht "übertrieben" ist. – TMB

6

Als Matt sagte, aber Sie können dies auch tun:

class MyController < ApplicationController 
    def show 
    MyModel.do_all_sorts_of_stuff 
    end 
end 

class Admin::MyController < MyController 
    def show 
    super 
    # Admin only stuff goes here 
    end 
end 

Das bedeutet, dass Sie nur auf den spezielleren Fällen :: Admin konzentrieren können MyController anstatt Code zu wiederholen.

Verwandte Themen