Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Einleitung
1 Einführung
2 Installation
3 Erste Schritte
4 Einführung in Ruby
5 Eine einfache Bookmarkverwaltung
6 Test-Driven Development
7 Rails-Projekte erstellen
8 Templatesystem mit ActionView
9 Steuerzentrale mit ActionController
10 Datenbankzugriff mit ActiveRecord
11 E-Mails verwalten mit ActionMailer
12 Nützliche Helfer mit ActiveSupport
13 Ajax on Rails
14 RESTful Rails und Webservices
15 Rails mit Plug-ins erweitern
16 Performancesteigerung
17 Sicherheit
18 Veröffentlichen einer Rails-Applikation auf einem Server
Ihre Meinung?

Spacer
 <<   zurück
Ruby on Rails 2 von Hussein Morsy, Tanja Otto
Das Entwickler-Handbuch
Buch: Ruby on Rails 2

Ruby on Rails 2
geb., mit DVD
699 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-779-1
Online bestellenPrint-Version jetzt bestellen
* versandkostenfrei in (D) und (A)
Pfeil 8 Templatesystem mit ActionView
  Pfeil 8.1 ERB-Templates
  Pfeil 8.2 Erstellung von Templates
  Pfeil 8.3 Helper
  Pfeil 8.4 Layouts
  Pfeil 8.5 Formulare
  Pfeil 8.6 Partials
  Pfeil 8.7 Alternative Template-Systeme

8 Templatesystem mit ActionView

Das Modul ActionView entspricht der Präsentationsschicht innerhalb des Model-View-Controller-Entwurfsmusters und dient zur Erstellung von Templates. ActionView-Templates können die Daten, die der Controller liefert, als dynamische Inhalte einbinden.

Templates

Templates sind Dateien, die zum Beispiel HTML-, XML- oder andere textbasierte Vorlagen enthalten, in die dynamische Inhalte eingebunden werden können. Innerhalb von Template-Dateien sollte nach Möglichkeit wenig Programmcode (Ruby) enthalten sein, um die Programmierlogik von der Anzeige getrennt zu halten.

Abbildung  Model-View-Controller-Entwurfsmuster

Instanzvariablen

In den Actions im Controller werden die dynamischen Inhalte, die in den Templates angezeigt werden sollen, ermittelt und in Instanzvariablen gespeichert, auf die die Templates zugreifen können. Wie das im Detail funktioniert, zeigen wir im weiteren Verlauf dieses Kapitels.

Beispiel

In unserer Beispiel-Applikation employees zur Verwaltung von Mitarbeitern (siehe Kapitel 3) befindet sich der Controller employees_controller.rb im Verzeichnis app/controllers . Die Templates zur Anzeige der Liste oder der Detailansicht der Mitarbeiter und zum Anlegen oder Editieren eines Mitarbeiters befinden sich im Verzeichnis app/views im Unterverzeichnis employees . Das heißt, die Templates, die von einem Controller benutzt werden, liegen innerhalb des Verzeichnisses app/views in einem Unterverzeichnis, das so heißt wie der Controller. Die einzelnen Templates sind nach den Actions innerhalb des Controllers benannt, von denen sie aufgerufen werden (index.html.erb, show.html.erb, new.html.erb und edit.html.erb). Weil das so ist, weiß Rails automatisch, welches Template am Ende einer Action geladen werden muss, ohne dass man es explizit angeben muss.

Template-Engines

In Rails stehen drei Template-Engines zur Verfügung:

  • ERB-Templates
    Dateiendung *.html.erb
  • Builder::Xml-Markup-Templates
    Dateiendung *.xml.builder
  • Ruby-JavaScript- oder RJS-Templates
    Dateiendung *.js.rjs (siehe Kapitel 13)

Die Dateiendung gibt an, welche Template-Engine zur Verarbeitung der Datei geladen wird. Vor der Dateiendung steht, von welchem Typ die Ausgabe des Templates ist.

Wir werden uns in diesem Kapitel hauptsächlich mit ERB-Templates beschäftigen.


Rheinwerk Computing - Zum Seitenanfang

8.1 ERB-Templates  topZur vorigen Überschrift

Standard- Templates

ERB-Templates sind die Standard-Templates von Rails. Generatoren, die Views erstellen, wie z. B. der scaffold -Generator, verwenden ERB-Templates.

Innerhalb der ERB-Templates einer Rails-Applikation wird der HTML-Code zur Ausgabe für den User generiert. Der Datei-Code besteht aus HTML-Code und darin eingebettetem Ruby-Code (embedded Ruby, ERB). Über den eingebetteten Ruby-Code können die dynamischen Inhalte aus den Instanzvariablen ausgegeben werden. Die Instanzvariablen werden (meist) durch die passende Action im Controller gesetzt.

Der Ruby-Code wird über spezielle Tags eingebettet:

  • <% Ruby-Code %>
    Der Ruby-Code innerhalb dieser Tags wird ausgewertet. Es wird jedoch nichts ausgegeben.
  • <%= Ruby-Code %>
    Der Ruby-Code wird ausgewertet und das Resultat als String ausgegeben.
  • <%- Ruby-Code -%>
    Der Ruby-Code wird ausgewertet. Jedoch wird nichts ausgegeben (auch kein Zeilenumbruch).
  • <%# Ruby-Code %>
    Wird zum Auskommentieren von Ruby-Code verwendet.

Generierter Code

Der scaffold -Generator hat zum Beispiel zur Ausgabe der Liste aller Mitarbeiter folgenden Code innerhalb des Templates index.html.erb generiert:

Listing  app/views/employees/index.html.erb

<h1>Listing employees</h1>
<table>
  <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    <th>Birthday</th>
    <th>E-Mail</th>
    <th>Comment</th>
  </tr>
<% for employee in @employees %>
  <tr>
    <td><%=h employee.firstname %></td>
    <td><%=h employee.lastname %></td>
    <td><%=h employee.birthday %></td>
    <td><%=h employee.email %></td>
    <td><%=h employee.comment %></td>
    <td><%= link_to 'Show', employee %></td>
    <td><%= link_to 'Edit', edit_employee_path(employee) %>
    </td>
    <td><%= link_to 'Destroy', employee,
            :confirm => 'Are you sure?',
            :method  => :delete %>
    </td>
  </tr>
<% end %>
</table>
<br />
<%= link_to 'New employee', new_employee_path %>

Instanzvariable setzen

In der passenden Action index im Employees-Controller wird die Instanzvariable @employees gesetzt:

Listing  app/controllers/employees_controller.rb

class EmployeesController < ApplicationController
  def index
    @employees = Employee.find(:all)
  end
  ...
end

E-Mails

ERB-Templates werden auch zur Generierung von E-Mail-Nachrichten genutzt, aber dazu mehr in Kapitel 11 .

Vorteile von ERB-Templates sind:

  • Sie sind sehr flexibel.
  • Es können alle Arten von Textdateien generiert werden (z. B. auch CSV-Dateien).
  • Die Einbettung des Ruby-Codes ist ähnlich wie bei PHP.

Die Nachteile sind:

  • Die Mischung von zwei verschiedenen Sprachen wirkt oft unschön.
  • Bei längeren Ruby-Code Passagen ist der Quelltext schwer lesbar.

Die Nachteile kann man vermeiden, indem man versucht, den Ruby-Code auf ein Minimum zu reduzieren. Dies wird u. a. durch den intensiven Gebrauch von Helper-Methoden erreicht.

Hinweis
Ab Rails 2.0 erhalten ERB-Templates die Dateiendung *.html.erb . In früheren Rails-Versionen endeten die Templates auf die Dateiendung *.rtml , die in Rails 2.0 aber auch noch unterstützt wird.

In den folgenden Abschnitten zeigen wir, wie Sie ERB-Templates im Programmieralltag am besten nutzen.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
  Zum Katalog
Zum Katalog: Ruby on Rails 2
Ruby on Rails 2
Jetzt bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Ruby on Rails 3.1






 Ruby on Rails 3.1


Zum Katalog: Responsive Webdesign






 Responsive Webdesign


Zum Katalog: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


Zum Katalog: JavaScript






 JavaScript


Zum Katalog: Schrödinger lernt HTML5, CSS3 und JavaScript






 Schrödinger lernt
 HTML5, CSS3
 und JavaScript


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de