Der CMS-Controller des
Rails Connectors
liefert Inhalte von Dokumenten und Ordnern mit Hilfe eines
Views aus. Durch das Routing wird dabei genau eine Datei als aktueller Kontext ausgewählt. Im View kann diese Datei – als Instanz der Klasse Obj
– unter dem Namen @obj referenziert werden.
Bei ERB-Templates werden die dynamischen Inhalte durch Ruby-Anweisungen im HTML-Text des Views eingefügt. Um beispielsweise den Namen der aktuellen Datei auszugeben, schreiben Sie:
<%= @obj.name %>
Auf Felder der Version kann auch direkt zugegriffen werden. Es gibt zwei Varianten, mit denen beispielsweise auf den Titel der freigegebenen Version der Datei zugegriffen werden kann (wenn keine freigegebene Version existiert, tritt bei beiden Varianten ein Fehler auf):
<%= @obj.title %> <%= @obj[:title] %>
Die Variante @obj.title
wird empfohlen, wenn Sie im Falle
eines fehlenden Feldes eine Fehlermeldung erzeugen möchten. Soll dagegen ein
fehlendes Feld ignoriert werden, verwenden Sie die Schreibweise
@obj[:title]
.
Damit die Werte korrekt dargestellt werden, ist es notwendig, den
Helper display_field
zu verwenden (bis 6.6.1 wird anstelle der Helper display_field
und display_value
der Helper display
verwendet). Er wird folgendermaßen eingebunden:
<%= display_field @obj, :title %>
Durch diese Schreibweise wird automatisch auch ein Bearbeitungselement in
die Vorschau integriert. Bearbeitungselemente können auf mehrere Arten
unterdrückt werden. Verwenden Sie eine der folgenden Schreibweisen (bis 6.6.1 wird anstelle der Helper display_field
und display_value
der Helper display
verwendet):
<%= display_value @obj.title %> <%= display_field @obj, :title, :marker => false %>
Komplexere Funktionen wie die Erzeugung einer Navigation werden aus Gründen der Übersichtlichkeit, der Wiederverwendbarkeit und der Qualitätssicherung nicht direkt in die Views aufgenommen. Hierfür werden so genannte Helpers verwendet.
Für HTML-Fragmente, die wiederverwendet werden sollen, stellt das Rails-Framework die Möglichkeit bereit, sie als sogenannte Partials auszulagern.