Зарегистрируйтесь, чтобы продолжить обучение

Иерархия контроллеров Ruby: Реальный Rails

Программа урока

  • Вспоминаем вложенные ресурсы
  • Создаем гибкую иерархию контроллеров
# config/routes.rb
Rails.application.routes.draw do
  namespace :api do
  end

  scope module: :web do
    namespace :admin do
    end

    root 'home#index'

    shallow do
      resources :books, only: index do
        resources :comments, except: [:edit, :update]
      end

      resources :users do
        resources :books
        resources :comments, only: [:index]
      end
    end
  end
end

# app/controllers/web/application_controller.rb
# Иерархия контроллеров позволяет разделять контекст и удобно создавать вложенные модули
class Web::ApplicationController < ActionController::Base
end

# app/controllers/web/books/application_controller.rb
# Каждый модуль содержит свой ApplicationController
class Web::Books::ApplicationController < Web::ApplicationController
  helper_method :resource_book

  def resource_book
    @resource_book ||= Book.find params[:book_id]
  end
end

# app/controllers/web/books/comments_controller.rb
class Web::Books::CommentsController < Web::Books::ApplicationController
  def index
    @comments = resource_book.comments.order(id: :desc)
  end
end

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу