Router Rails rozpoznaje adresy URL i przekazuje je do odpowiednich akcji kontrolerów, generując jednocześnie wzajemne ścieżki i adresy URL za pośrednictwem helperów.
Trasy zasobów (resources)
Rails.application.routes.draw do
root "home#index"
resources :articles do
# Trasy elementów (działa na konkretnym obiekcie: /articles/:id/publish)
member do
patch :publish
end
# Trasy kolekcji (działa na zbiorze: /articles/search)
collection do
get :search
end
# Zagnieżdżone zasoby (/articles/:article_id/comments)
resources :comments, only: [:create, :destroy]
end
end
Pomocniki ścieżek (Route Path Helpers)
| Akcja | Pomocnik ścieżki | Wygenerowany URL |
|---|---|---|
index |
articles_path |
/articles |
show |
article_path(@article) |
/articles/:id |
new |
new_article_path |
/articles/new |
edit |
edit_article_path(@article) |
/articles/:id/edit |
Przestrzenie nazw i zakresy (Namespaces & Scopes)
# Namespace: prefiks URL /admin oraz kontrolery Admin::
namespace :admin do
resources :users
end
# Kieruje do Admin::UsersController pod adresem /admin/users
# Scope: prefiks URL bez modyfikowania przestrzeni nazw kontrolera
scope "/v1" do
resources :posts
end
Niestandardowe pojedyncze trasy i przekierowania
# Niestandardowe mapowanie metod HTTP
get '/about', to: 'pages#about'
post '/webhook', to: 'webhooks#receive'
# Stałe przekierowanie 301
get '/stories', to: redirect('/articles')