Routerul Rails recunoaște URL-urile și le transmite acțiunilor potrivite din controllere, generând în același timp căi și URL-uri reciproce prin intermediul metodelor helper.
Rute bazate pe resurse (resources)
Rails.application.routes.draw do
root "home#index"
resources :articles do
# Rute membre (operează pe un element specific /articles/:id/publish)
member do
patch :publish
end
# Rute de colecție (operează pe /articles/search)
collection do
get :search
end
# Resurse imbricate (/articles/:article_id/comments)
resources :comments, only: [:create, :destroy]
end
end
Metode helper de cale (Route Path Helpers)
| Acțiune | Helper de cale | URL Generat |
|---|---|---|
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-uri și Scope-uri (Namespaces & Scopes)
# Namespace: prefix URL /admin și controllere grupate sub Admin::
namespace :admin do
resources :users
end
# Rutează către Admin::UsersController la /admin/users
# Scope: prefix URL fără modificarea namespace-ului controllerului
scope "/v1" do
resources :posts
end
Rute singulare personalizate și redirecționări
# Mapare personalizată a verbelor HTTP
get '/about', to: 'pages#about'
post '/webhook', to: 'webhooks#receive'
# Redirecționare permanentă 301
get '/stories', to: redirect('/articles')