In
Abschnitt 3.3, „Dynamisch mit erb erzeugtes
HTML“ und
Kapitel 5, Scaffolding und REST hatten wir schon mal kurz Kontakt mit
Routes. Mit den in
config/routes.rb
enthaltenen Routen wird definiert,
was in Rails Application passiert, wenn eine bestimmte URL vom Besucher
der Webseite angesteuert wird. Eine Route kann statisch und dynamisch sein
und evt. dynamische Werte mit Variablen an den Controller übergeben.
Sollten mehrere Routen auf eine URL zutreffen, so gewinnt die in der
config/routes.rb
am oberste eingetragene.
Anmerkung
Wenn Sie wenig Zeit haben, können Sie dieses Kapitel erst einmal
überspringen und später bei konkreten Fragen noch mal
nachschlagen.
Bauen wir uns zuerst eine Test-Rails-Applikation zum
Experimentieren:
MacBook:~ xyz$ rails new shop
[...]
MacBook:~ xyz$ cd shop
MacBook:shop xyz$
Mit
rake routes können wir uns die Routen eines
Projektes anzeigen lassen. Probieren wir das direkt im frischen Projekt
aus:
MacBook:shop xyz$ rake routes
MacBook:shop xyz$
Nichts. Es sind in einem neuen Rails-Projekt keine Routen
eingetragen.
Wichtig
Auch bei einem neuen Rails-Projekt können Sie nach dem Start des
Rails-Servers mit
rails server auf
http://0.0.0.0:3000/
zugreifen.
Wie kann dies ohne eine eingetragene Route funktionieren? Die Lösung
liegt im Verzeichnis
/public
. Dort liegt die Datei
public/index.html
, und immer wenn im Verzeichnis
/public
eine Datei liegt, die zur angegebenen URL
passt, bekommt diese eine höhere Priorität als eine Rails-Route. Falls
keine Route definiert ist, wird automatisch in
public
nach
index.html
gesucht.
Bei einem neuen Rails-Projekt ist die Datei
config/routes.rb
mit vielen auskommentierten
Beispielen bestückt. Für den Verlauf dieses Kapitels tun wir so, als wenn
diese Beispiele nicht drin wären und zeigen immer nur die neu
eingetragenen Routen an.