Маршрутизатор Rails распознает URL-адреса и направляет запросы к действию контроллера, а также генерирует пути и URL с помощью методов-хелперов.
Ресурсные маршруты (resources)
Rails.application.routes.draw do
root "home#index"
resources :articles do
# Маршруты элементов (для конкретного объекта /articles/:id/publish)
member do
patch :publish
end
# Маршруты коллекций (для набора объектов /articles/search)
collection do
get :search
end
# Вложенные ресурсы (/articles/:article_id/comments)
resources :comments, only: [:create, :destroy]
end
end
Хелперы путей маршрутов (Route Path Helpers)
| Действие (Action) | Хелпер пути | Сгенерированный 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 |
Пространства имен и области видимости (Namespaces & Scopes)
# Namespace: префикс URL /admin и контроллеры внутри пространства Admin::
namespace :admin do
resources :users
end
# Маршрутизирует на Admin::UsersController по адресу /admin/users
# Scope: префикс URL без изменения пространства имен контроллера
scope "/v1" do
resources :posts
end
Пользовательские одиночные маршруты и редиректы
# Пользовательское сопоставление HTTP-глаголов
get '/about', to: 'pages#about'
post '/webhook', to: 'webhooks#receive'
# Постоянное перенаправление 301
get '/stories', to: redirect('/articles')