Ruby on Rails: ActionView: Grundlagen

Aus Wikibooks

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)