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)
<< ActionController | Startseite/Inhaltsverzeichnis | .. >>