Ruby on Rails: ActionView: Grundlagen

View Seiten zeigen die Daten an, die der Controller aus dem Modell bzw. den Modellen zur Verfügung stellt. Außerdem nehmen sie Benutzeraktionen entgegen und rufen die entsprechenden Controller-Methoden auf. Sie sollen keine komplexe Logikprogrammierung enthalten. Das gehört ins Modell.

Für View-Seiten verwenden wir embedded Ruby, d.h. HTML mit eingebettetem Ruby Code. Dabei wird der Ruby Code geklammert. Hierbei gilt:

  • <% Ruby-Code %> der Ruby-Code wird ausgeführt
  • <%= Ruby-Code %> der Ruby-Code wird ausgewertet und das Ergebnis angezeigt.

Wer schon mit JSP gearbeitet hat, wird die Syntax wiedererkennen.

Die Datei-Endung für embedded Ruby ist (seit Rails 2.0) ".html.erb". Die alte Datei-Endung ".rhtml" wird noch unterstützt aber wenn wir die Dateien neu erstellen, sollten wir ".html.erb" als Extension verwenden. Der scaffold-Generator erzeugt ebenfalls .html.erb-Dateien.

Hinweis für TextMate Nutzer Bearbeiten

Syntax Highlighting für *.html.erb in TextMate einschalten:

  • Bundles > Bundle Editor > Edit Languages
  • Ruby on Rails > HTML(rails) auswählen
  • Dann in der angezeigten Konfigurationsdatei in der zweiten Zeile
fileTypes = ( 'rhtml' ); 

zu

fileTypes = ( 'rhtml', 'html.erb' ); 

ergänzen.

Beispiele Bearbeiten

Es ist jetzt <%= Time.now %>. Und so ..
<% 3.times do %>
Ho! 
<% end %>

Mehr zur ERB-Syntax Bearbeiten

Die hier verwendete Syntax erzeugt nach dem schliesenden "%>"-Tag einen Zeilenvorschub im HTML. Im Browser ist das whitespace und wird ignoriert. Wenn wir diesen Zeilenvorschub vermeiden wollen, können wir den Ruby Code mit "-%>" statt "%>" beenden (Minus-Zeichen ergänzt). Also beispielsweise

Es ist jetzt <%= Time.now -%>. Und so ..

Wenn in der "<%="-Ruby-Ausgabe Zeichenkombinationen vorkommen, die fäschlicherweise als HTML interpretiert werden könnten, können wir das mit html_escape() bzw. kurz h() vermeiden.

Bei xy haben Sie <%= h(params[:xy]) %> eingegeben.

Formatvorlagen Bearbeiten

Formatvorlagen(templates) und wo sie stehen. TODO ..

View-Helper Bearbeiten

Rails stellt eine Reihe von Helper-Methoden, die wir in den View Dateien benutzen können:

  • Format Helper, z.B.:
<%= distance_of_time_in_words(time.now, Time.now + 33, true) %>
  • Die debug-Methode
 <%= debug(params) %>
  • Link-Helper
 <%= link_to "kommentieren", :action => "add_comment" %>
  • Sylesheeet Link-Helper
 <%= stylesheet_link_tag "schedule", :media => "all" %>
  • Pagination-Helper
 <%= pagination_links(@user_pages %>
  • Helper für Formulare
 siehe (TODO Kapiel über Formulare)