Il router di Rails riconosce gli URL e li invia all'azione appropriata del controller, generando contemporaneamente percorsi e URL tramite helper dedicati.
Rotte per risorse (resources)
Rails.application.routes.draw do
root "home#index"
resources :articles do
# Route membro (opera su un elemento specifico /articles/:id/publish)
member do
patch :publish
end
# Route di collezione (opera su /articles/search)
collection do
get :search
end
# Risorse nidificate (/articles/:article_id/comments)
resources :comments, only: [:create, :destroy]
end
end
Helper di percorso (Route Path Helpers)
| Azione | Path Helper | URL Generato |
|---|---|---|
index |
articles_path |
/articles |
show |
article_path(@article) |
/articles/:id |
new |
new_article_path |
/articles/new |
edit |
edit_article_path(@article) |
/articles/:id/edit |
Namespace & Scope
# Namespace: prefisso URL /admin e controller preceduti da Admin::
namespace :admin do
resources :users
end
# Indirizza a Admin::UsersController su /admin/users
# Scope: prefisso URL senza modificare il namespace del controller
scope "/v1" do
resources :posts
end
Rotte singolari personalizzate e reindirizzamenti
# Mappatura personalizzata dei verbi HTTP
get '/about', to: 'pages#about'
post '/webhook', to: 'webhooks#receive'
# Reindirizzamento permanente 301
get '/stories', to: redirect('/articles')