Wo kann man den Code platzieren, der kein Model, View, Controller oder Helfer ist?

8

Ich möchte Code teilen, der nicht mit Ansichten zwischen mehreren Controllern in meiner Rails-App zusammenhängt. Wo in der Verzeichnisstruktur sollte ich es platzieren?

BEARBEITEN: der fragliche Code, wenn etwas von allen Controllern verwendet wird, um wie sie die Modelldaten rendern

zu bestimmen     
Bruno Antunes 24.07.2009, 14:20
quelle

5 Antworten

8

Wenn der Code etwas wie Module mit Hilfsmethoden in diesen ist, könnte dies im Ordner lib liegen. Alternativ könnten Sie eine gemeinsame Oberklasse für einige Ihrer Controller erstellen, wenn sie das Verhalten teilen.

Bitte posten Sie ein Beispiel für die Art von Code, an den Sie denken.

    
mikej 24.07.2009, 14:34
quelle
5

Wenn es "etwas ist, was alle Controller verwenden", würde ich es in eine Basisklasse legen, die von allen Controllern verwendet wird. Der "application_controller" kommt mir in den Sinn.

    
Pete 24.07.2009 15:09
quelle
2

Ich habe Module in lib erstellt, um Code für andere Klassen bereitzustellen.

Hier ist ein abgekürztes Beispielmodul, das Werte für Ansichten definiert, die von verschiedenen Controllern instanziiert werden können.

%Vor%

Um dies zu verwenden, fügen Sie einfach das Modul in Ihre Klasse ein:

%Vor%

Der Hauptvorteil dieser Methode besteht darin, dass Ihr Controller-Verzeichnis sich auf Controller und Ihr Modellverzeichnis auf Logik konzentriert.

    
Kevin McFadden 24.07.2009 15:55
quelle
0

Ich persönlich denke, es ist in Ordnung, wenn sein Controller im Zusammenhang mit Ihrem Controller-Verzeichnis, sondern als ein Modul, z. app/controllers/what_am_i_module.rb , da es für die Anwendung in Entwicklung spezifisch ist.

lib scheint mir ein Ort zu sein, an dem ich Framework / Core-Erweiterungen oder Affe-Patches platzieren würde, die für die Anwendung nicht spezifisch sind.

    
Omar Qureshi 24.07.2009 15:02
quelle
0

Wenn es von allen Ihren Controllern verwendet wird, kleben Sie es in application_controller.rb

Alle Ihre Controller erben von ApplicationController, so dass sie alle Zugriff darauf haben.

    
Jim Neath 24.07.2009 16:02
quelle