Der Rails Connector ermöglicht es (ab Version 6.7.3), Controller zu definieren, die nur für bestimmte Vorlagen zuständig sind. Einen neuen Controller einzubinden, erfordert keinerlei Konfiguration, abgesehen davon, dass die Controller-Klasse angelegt werden muss.
Mögliche Anwendungsfälle sind:
helper :all
)POST
-Requests, beispielsweise für die Realisierung von Formularen über CMS-DateienDer Rails Connector sucht für jede CMS-Datei, die angezeigt werden soll, nach einem Controller, dessen Name zur Vorlage der Datei passt. CMS-Dateien der Vorlage Publication
würden, sobald ein Controller namens PublicationController
existiert, der von RailsConnector::DefaultCmsController
abgeleitet ist, von diesem ausgeliefert werden. Existiert er nicht, wird stattdessen CmsController
verwendet.
Die Standard-Aktion zur Auslieferung einer CMS-Datei bleibt weiterhin index
. Zusätzliche Aktionen können angesprochen werden, indem die Obj
-Methode controller_action_name
überschrieben wird.
Der Rails Connector stellt eine spezielle Testmethode zur Verfügung, um vorlagenspezifische Controller zu testen. Mit der Methode request.for_cms_object
kann im Test definiert werden, welches Cms-Objekt geladen werden soll. Hier ein Beispiel für das Testframework rspec
:
describe CmsController, "request for HTML document" do before do controller.stub!(:ensure_object_is_permitted).and_return(true) controller.stub!(:ensure_object_is_active).and_return(true) controller.stub!(:set_google_expire_header).and_return(true) @obj = mock_model(Obj, :mime_type => 'text/html', :permalink => 'dummy') request.for_cms_object(@obj) end it "should render the view" do get 'index' response.should be_success end end