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' %>