Маршруты и ресурсы
Маршрутизация в стиле REST
«Маршруты и ресурсы» — бесплатный урок Ruby Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.
Что такое маршрутизация
Маршрутизация связывает входящий HTTP-запрос (метод и путь) с действием контроллера, которое его обрабатывает. Файл маршрутов — это входная точка приложения Rails.
- Маршруты находятся в
config/routes.rb. - Каждый маршрут связывает URL с
controller#action. - Rails сопоставляет маршруты сверху вниз.
Простой маршрут
Самый простой маршрут связывает путь с действием с помощью get. В этом примере запрос GET к /about вызывает действие about контроллера PagesController.
Rails.application.routes.draw do
get "/about", to: "pages#about"
endМетоды HTTP
Каждый маршрут указывает метод, обозначающий намерение:
getчитает данные.postсоздаёт данные.patch/putобновляет данные.deleteудаляет данные.
Один и тот же путь с разными методами может вести к разным действиям.
Ресурсы REST
Вспомогательный метод resources создаёт семь стандартных маршрутов REST для модели одной строкой. Это основа принятой в Rails маршрутизации.
Rails.application.routes.draw do
resources :articles
endСемь действий
resources :articles создаёт маршруты для:
index— списка,show— одного элемента.new— формы,create— сохранения.edit— формы,update— сохранения.destroy— удаления.
Так покрывается весь жизненный цикл ресурса.
Вспомогательные методы путей
Маршруты создают именованные вспомогательные методы, поэтому вам не придётся прописывать URL вручную. resources :articles предоставляет articles_path, article_path(@article), new_article_path и edit_article_path(@article).
articles_path # => "/articles"
article_path(5) # => "/articles/5"
new_article_path # => "/articles/new"
edit_article_path(5) # => "/articles/5/edit"Ограничение действий
Используйте only или except, чтобы создать только нужные маршруты. Так набор маршрутов остаётся небольшим и формируется намеренно.
resources :articles, only: [:index, :show]
resources :comments, except: [:edit, :update]Вложенные ресурсы
Вкладывайте ресурсы, чтобы выразить принадлежность в URL. Комментарии, принадлежащие статье, получают путь /articles/1/comments. Вложенный маршрут передаёт article_id контроллеру.
resources :articles do
resources :comments
end
# GET /articles/1/commentsКорневой маршрут
root определяет, что загружается по адресу /, то есть на главной странице приложения. Для ясности разместите его ближе к началу файла маршрутов.
Rails.application.routes.draw do
root "articles#index"
endПросмотр маршрутов
Запустите rails routes, чтобы вывести все маршруты вместе с их методом, путём, вспомогательным методом и парой controller#action. Это самый быстрый способ понять или отладить маршрутизацию приложения.
Маршруты для элемента и коллекции
Добавляйте пользовательские действия к ресурсу:
- Маршруты
memberработают с одной записью:/articles/1/publish. - Маршруты
collectionработают со всем набором:/articles/search.
resources :articles do
member { post :publish }
collection { get :search }
endБыстрая проверка
Проверьте, насколько хорошо вы поняли маршрутизацию.
Повторение: маршруты и ресурсы
Вы изучили маршрутизацию REST:
- Маршруты связывают метод и путь с
controller#action. resourcesсоздаёт семь стандартных маршрутов.- Вспомогательные методы путей избавляют от URL, прописанных вручную.
only/except, вложенные ресурсы, маршрутыmemberиcollectionпозволяют настроить набор маршрутов.rootзадаёт главную страницу, аrails routesвыводит все маршруты.
Далее мы напишем контроллеры, которые обрабатывают эти запросы.
Часто задаваемые вопросы
Урок «Маршруты и ресурсы» бесплатный?
Да — полный текст урока «Маршруты и ресурсы» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.
Чему я научусь в уроке «Маршруты и ресурсы»?
Маршрутизация в стиле REST Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ruby Academy?
Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Маршруты и ресурсы»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ruby Academy?
Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Маршруты и ресурсы
- Контроллеры и действия
- Строгие параметры
- Представления и отображение