Websiteentwicklung: Ruby on Rails: Vereinfachen

Rails Guide 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

  1. Rails Guide Layouts and Rendering in Rails