47.17. Routing

Směrování url dotazu na objekty

47.17.1. Formát
47.17.2. Prázdné url
47.17.3. Pojmenované routy

Konfigurace routingu je uvedena v samostatném konfiguračním souboru config/routes.rb. V tomto souboru v definici třídy ActionController::Routing::Routes.draw jsou zapsány všechny mapování url na objekty aplikace. Pomocí příkazu map.connect se spojí dané url s objektem. Na pořadí příkazů záleží. Při porovnávání url se procházejí mapování po řadě a první které vyhovuje se použije. Tedy pořadí mapování je nejdříve specifická a pak obecná. Poslední mapování jsou proto standardní obecná mapování:

  # Install the default route as the lowest priority.
  map.connect ':controller/:action/:id.:format'
  map.connect ':controller/:action/:id'
end

Přijít s vlastním a lepším příkladem!

map.connect 'recipes_for/:ingredient', :controller => 'recipes', :action => 'show'

První argument příkazu recipes_for/:ingredient je url, další parametry vytvářejí spojení na objekt. V našem příkladu se odkaz na url převede na akci 'show' řadiče 'recipes'. Součástí url moho být divoké karty jako je zde :ingredient řetězec který bude v url na místě :ingredient bude předán do aplikace jako parametr.

Mapování ovšem funguje taky obráceným směrem. Kdykoliv konstruujeme url například pomocí link_to projde program jednotlivá mapování a sestaví url. Pro naše mapování třeba

<= link_to "Recipe for apples", :controller => 'recipes', :action => 'show', :ingredient => 'apples' %>
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .