Websiteentwicklung: Ruby on Rails: Vereinfachen
Dazu gibt es einen Rails Guide [1] Layouts and Rendering in Rails |
Die Views, die das Scaffolding für unsere automatisch erzeugt hat, sind nicht miteinander verbunden: Hallos linkt zur zu Hallos-Views, Comments zur zu Comments-Views. Das ist nicht gut zu bedienen, und eigentlich unpraktisch
Nun wollen wir diese Views vereinfachen, und leichter bedinbar machen.
Welche View bleibt?
[Bearbeiten]Durch die Vereinfachung werden einige Views wegfallen - aber welche? Betrachent wir folgende routes:
0 root / umgeleitet auf hallos#index 1 hallos GET /hallos hallos#index Liste aller Hallos 2 hallo GET /hallos/:id hallos#show Anzeigen eines Hallos, ohne Kommentare 3 hallo_comments GET /hallos/:hallo_id/comments comments#index Liste der Kommentare zu einem Hallo 4 hallo_comment GET /hallos/:hallo_id/comments/:id comments#show Ein Kommentar
Nummer 2 und Nummer 3 würden sich beide eigenen, um ein Hallo mit allen Kommentaren
dazu anzuzeigen. Betrachten wir an die dahinter liegenden Controller: im comments_controller
wird @hallo schon gefunden und geladen. D.h. es ist einfach, es auch in der View anzuzeigen.
Im hallos_controller werden keine Kommentare geladen. Deswegen ist es einfacher, Nummer 2 nicht weiter
zu verwenden, und überall durch Nummer 3 zu ersetzen.
View zeigt Hallo und Kommentare
[Bearbeiten]Wir können in die view comments/index.html.erb einfach Code zur Darstellung des Hallos einfügen:
<h1>Listing comments</h1> <p><%= @hallo.von %> sagt:</p> <blockquote><%= @hallo.meldung %></blockquote>
Neu verlinken
[Bearbeiten]In der View hallos/index.html.erb können wir nun die Show-Links verändern: statt
hallo_path( hallo )
auf
hallo_comments_path( hallo )
Quellen
- ↑ Rails Guide Layouts and Rendering in Rails