Routes in Rails 3
Rails 3 ist bekanntermaßen eine Verschmelzung von Rails und Merb. Viele Anpassungen werden auch “nach Aussen sichtbar” sein, aber die meisten Veränderungen werden im Rails-Kern stattfinden. In Rails 3 wird auch das Routing angepasst bzw. (wieder) neu geschrieben. Die Routen wurden in der Vergangheit häufiger angepasst und mit jeder Version wurden sie schneller und brachten mehr Flexibilität. Auch die neue Version macht keine Ausnahme und bringt mit der neuen DSL ein paar Verbesserungen mit.
Die neue DSL ist insgesamt sauberer aufgebaut. Eine typische RESTful Route in Rails 3 könnte folgendermaßen Aussehen:
resources :products do
resource :category
member do
post :short
end
collection do
get :long
end
end
So würde die es z.Z. in Rails 2 aussehen:
map.resources :products, :member => {:short => :post}, :collection => {:long => :get} do |products|
products.resource :category
end
Wie man sieht ist die neue Schreibform viel lesbarer und somit einfacher zu pflegen.
Im folgenden werden wir verschiedene Beispiele für die unterschiedlichen Route-Typen in Rails 3 zeigen
Default Route
Die Default Route in Rails 3 ist nun explizieter und die Klammern verdeutlichen die optionalen Parameter:
match '/:controller(/:action(/:id))'
Reguläre Routen
Anstatt verschiedene Parameter anzugeben, kann man nun die Angaben “zusammenfassen” ("catalog#view“):
match 'products/:id' => 'catalog#view'
Das Vereinfacht die Routenerstellung. Die Beispielroute wie sie heute geschrieben werden würde:
map.connect 'products/:id', :controller => 'catalog', :action => 'view'
Named Routen
Die Unterscheidung zwischen regulären und named Routen ist schwieriger im Vergleich zu Rails 2. Der einzige Unterschied ist, dass bei regulären Routen im ersten Argument ein Parameter zu finden ist.
match 'logout', :to => 'sessions#destroy'
Auch in diesem Fall ist die neue Version sauberer und lesbarer als in Rails 2:
map.logout '/logout', :controller => 'sessions', :action => 'destroy'
Leere Route
Die Startseite einer Rails-App wird durch eine “leere” Route konfiguriert. Bereits in der jetzigen Form gibt eine Kurzschreibform dafür:
map.root :controller => "welcome", :action => 'show'
Dies wird nochmal mehr vereinfacht und kann folgendermaßen geschrieben werden:
root :to => 'welcome#show'
RESTful Routen
RESTful Routen ist die default- und bevorzugte Variante seit Rails 2.
Eine typische RESTful Route wird noch einfacher zu konfigurieren sein:
resources :products
Diese Zeile würde alle benötigten Routen generieren. Genau wie in der jetzigen Version lassen sich mehrere Routen in einer Zeile definieren.
Weitere RESTful Actions
Weitere RESTful Actions lassen sich auf verschiedene Art und Weise implementieren:
resources :products do
collection do
get :sold
post :on_offer
end
end
Die Action läßt sich auch folgendermaßen schreiben:
resources :products do get :sold, :on => :collection end
Die erste Variante ist besser wenn mehr als eine Action konfiguriert werden muss.
Nested Resources
In Rails 2 wurden nested Resources in einem Block definiert oder durch die Verwendung von :has_many oder :has_one Schlüssel.
Beide Version werden nun durch die Blockversion ersetzt:
resources :projects do resources :tasks, :people end
Namespaced Resources
Diese sind nützlich wenn Resoucen in einem (Unter-)Verzeichnis liegen und sie lassen sich einfach konfigurieren:
namespace :admin do resources :projects end
Die Neugestaltung der Routes in Rails 3 sieht viel versprechend aus und wird mit großer Sicherheit die Arbeit vereinfachen. Wir hoffen dieser Artikel wird euch beim Umstieg helfen.
Dieser Beitrag ist angelehnt an den Blogeintrag von Rizwan Reza
Eingestellt am 28.12.2009 um 10:49
Kategorie: Tutorials
Suchen auf rubyonrails.de
Tags
2.0 2.1 Active-Record Ajax Buch Capistrano Enterprise Event Gewinnspiel Grundlagen IDE irb jQuery Kochbuch Konferenz Mac Mongrel OpenRoRBook OReilly OSX Passenger Phusion Plugin PragProgs Rails Rails 3 RailsKonf RailsWay RailsWayCon Release Release Candidate Routing Ruby Ruby 1.9 RubyGems rubyonrails.de Ryan Bates Scaffolding Screencast Script-Tip Security Tutorial Video Views WindowsAktuelle Artikel
- Script-Tip: URL auf Existenz prüfen
- Freikarte für die RailsWayCon 2010
- Screencast: Schutz vor XSS in Rails 3
- Phusion Passenger 2.2.11 erschienen
- Script-Tip: Summe eines Arrays ermitteln
- Vortrag zu Rails 3 von Yehuda Katz
- Hobo 1.0 veröffentlicht
- Screencast: Routes in Rails 3
- 5 freie Kapitel aus Ruby Best Practices
- Phusion Passenger 2.2.10 veröffentlicht
Artikel Archiv
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- May 2009
- April 2009
- March 2009
- February 2009
- December 2008
- November 2008
- August 2008
- July 2008
- June 2008
- May 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
Aktuelle Rails Version + Abhängigkeiten:
rails-2.3.5actionmailer (= 2.3.5, runtime)
actionpack (= 2.3.5, runtime)
activerecord (= 2.3.5, runtime)
activeresource (= 2.3.5, runtime)
activesupport (= 2.3.5, runtime)
rake (>= 0.8.3, runtime)
Rails auf Rubyforge
Rails auf Github
