Views erweitern

Diese Anleitung richtet sich an Entwickler, die eine existierende Rails-Applikation, die bereits CMS-Inhalte mit Hilfe des Rails Connectors darstellt, um einen View erweitern möchten. Um dies tun zu können, müssen die folgenden Fragen geklärt werden.

  • Wo und wie wird darüber entschieden, welcher View verwendet werden soll?
  • Wo und wie legt man einen neuen View an?
  • Wie füllt man einen View mit Inhalt?

Wo und wie wird darüber entschieden, welcher View verwendet werden soll?

In herkömmlichen Rails-Applikationen ist es selten nötig, im Controller explizit anzugeben, welcher View zur Darstellung verwendet werden soll. In der Regel folgt man der Konvention, den View genauso zu nennen wie die betreffende Aktion des Controllers. Rails würde entsprechend dieser Konvention für die Aktion CmsController#index einen View unter app/views/cms/index.html.erb erwarten und versuchen, diesen zu laden.

Solange alle Objekte mit identischem Layout dargestellt werden sollen, können Sie dieser Konvention folgen. Typischerweise existieren allerdings CMS-Objekte unterschiedlicher Vorlagen (objClass), in unterschiedlichen Pfaden oder mit unterschiedlichen Feldinhalten. Welche Funktion diese Unterschiede in der Web-Anwendung haben, ob sie sich beispielsweise auch auf die Anzeige auswirken, hängt vom Einzelfall ab.

Für den Fall, dass Objekte je nach Vorlage in einem anderen Layout dargestellt werden sollen, verfügt der Rails Connector über vorlagen-spezifische Controller.

Wo und wie legt man einen neuen View an?

Nutzt man vorlagen-spezifische Controller, müssen Views in einem nach dem Controller benannten Unterverzeichnis von app/views/ angelegt werden.

Wie füllt man einen View mit Inhalt?

In Anwendungen mit dem Rails Connector unterscheidet sich der Inhalt von Views konzeptionell nicht von Views in herkömmlichen Rails-Anwendungen. Es ist jedoch wichtig zu wissen, dass in jedem View eine @obj-Instanz zur Verfügung steht, die das aktuell geladene CMS-Objekt repräsentiert. Je nachdem, um welches Objekt es sich dabei handelt, d.h. welche Vorlage (objClass) ihm zugewiesen wurde und über welche Felder es dadurch verfügt, kann auf eine bestimmte Menge von Feldern zugegriffen werden. Dazu gehören CMS-interne Felder wie title, name, path, valid_from und valid_until, jedoch auch kundenspezifische Felder wie zum Beispiel abstract und showintoc.

Zur Anzeige von Feldwerten stehen Hilfsmethoden (Helpers) zur Verfügung. Welche Helpers für welche Felder am besten geeignet sind, ist in der API-Dokumentation des Rails Connectors beschrieben.