Websiteentwicklung: Ruby on Rails: Controller und View

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Websiteentwicklung Ruby on Rails Controller und View


Wie spielen Controller und View zusammen?

Controller[Bearbeiten]

Den Controller haben wir hier schon kurz besprochen.

Views[Bearbeiten]

Datensatz anzeigen mit show[Bearbeiten]

Die View von show verwendet ganz einfaches Embedded Ruby:

 <% befehl %>

Mit dieser Schreibweise kann man gut Verzweigungen und Schleifen schreiben:

 <% if @hallo.von == 'Brigitte' then %>
     <p>die böse Brigitte!</p>
  <% else %>
     ...
  <% end %>

Mit einem istgleich-Zeichen kann man etwas ausgeben

 <%= variable %>

Achtung: Rails nimmt an, dass die Variable vielleicht Daten enthält, die von Usern eingegeben wurden, und dass diese Daten noch HTML, CSS, Javascript enthalten könnten. Deswegen wird automatisch ein html-escaping durchgefürht:

 <%= variable mit html %>

Das sieht zum Beispiel so aus:

 <%= 'User sagte <script>alert("peng")</script>' %>

wird zu

 User sagte &lt;script&gt;alert("peng")&lt;/script&gt;

und damit harmlos: das Javascript wird nicht mehr ausgeführt, sondern nur lesbar angezeigt.

Datensätze auflisten mit index[Bearbeiten]

Für das Auflisten braucht mein eine Schleife: alle Meldungen sind im Array @hallos gespeichert.


 <% @hallos.each do |hallo| %>
     hier passiert was mit hallo
 <% end %>

Eingabeformular new (und edit)[Bearbeiten]

Das Eingabe- und Bearbeitungsformular sieht sehr einfach aus, ist aber komplex. Der Form-Tag wird von folgender Konstruktion erzeugt:

 <% form_for(@hallo) do |f| %>
   ....
 <% end %>

Innerhalb dieses Tags kann man dann label und Eingabefelder verwenden.


  <p>
    <%= f.label :meldung %><br />
    <%= f.text_area :meldung %>
  </p>
Rails Guide Dazu gibt es einen Rails Guide [1] Internationalization

Das Argument für den Befehl label ist der Name der Datenbankspalte als Symbol. Dieser Name der Spalte wird in eine menschenlesbare Form gebracht und eventuell übersetzt (diese Vorkehrungen für Übersetzung nennt man allgemein 'Internationalisierung').

Die text_area bezieht sich auf die Eigenschaft meldung des Objekts. Beim Bearbeitungsformular wird hier also der aktuelle Wert angezeigt, bevor er verändert werden kann. Wird das Formular eingeschickt, ohne dass die Daten gespeichert werden können, dann bleiben hier die Eingaben erhalten.

Rails Guide Dazu gibt es einen Rails Guide [2] Form Helpers Guide
Rails Guide Siehe dazu die Rails API[3] Rails API: FormHelper

Neben dem text_field und der text_area gibt es auch noch weitere Eingabefelder (check_box, file_field, hidden_field, password_field, radio_button).



Wikibooks buchseite.svg Zurück zu Datenbank und Model | One wikibook.svg Hoch zu Ruby on Rails | Wikibooks buchseite.svg Vor zu Views, Partials und Layouts


  1. Rails Guide Internationalization
  2. Rails Guide Form Helpers Guide
  3. Rails API Rails API: FormHelper