Routes
Intro
Описаны в /config/route.rb
и скриптах /config/routes/...
.
Про DSL Rails Routes: https://guides.rubyonrails.org/routing.html
Этот механизм перенаправляет url на контроллеры или Rack приложению. Позволяет не хардкодить в куче мест строки.
Если все зависимости у вас локально подтянуты, то можно посмотреть все роуты командой :
Routing to Rack: https://guides.rubyonrails.org/routing.html#routing-to-rack-applications
Routes directives
resources
С помощью этой директивы можно создать эндпоинты для конкретного ресурса. Например:
создаст семь эндпоинтов, обрабатываемых контроллером Photos:
GET
/photos
photos#index
display a list of all photos
GET
/photos/new
photos#new
return an HTML form for creating a new photo
POST
/photos
photos#create
create a new photo
GET
/photos/:id
photos#show
display a specific photo
GET
/photos/:id/edit
photos#edit
return an HTML form for editing a photo
PATCH/PUT
/photos/:id
photos#update
update a specific photo
DELETE
/photos/:id
photos#destroy
delete a specific photo
Так же можно создавать подблок ресурса
Что создаст следующие эндпоинты для комментов
При определении ресурса можно указать доп опции:
Singular Resources
В некоторых случаях нам не надо кучу эндпоинтов для ресурсов.
namespaces
Позволяет организовывать роуты в группы:
scope
Если мы не хотим, чтобы в пути был /admin, но хотим, чтобы существовала логическая группа — используем директиву scope:
If instead you want to route /admin/articles
to ArticlesController
(without the Admin::
module prefix), you can specify the path with a scope
block:
concern
Директива позволяет определять роуты, которые могут быть переиспользованы в других роутах. Позволяет писать меньше кода тем самым
Использовать это можно где угодно (например и в namespaces)
draw
Это применяется для создания макросов. Для тех случаев, когда мы хотим вынести группу маршрутов в отдельный файл, например:
А так он будет подключен в главном route-конфиге:
Или по другому без оборота в routes.draw (как мне кажется это проще)
Last updated