Ruby On Rails
2026-02-26 17:16 Diff

В этом уроке познакомимся с созданием статических страниц с помощью Rails. А также познакомимся с ресурсным роутингом, который позволяет снизить дублирование кода.

Попробуем создать первое приложение с простой страницей.

Сервер

Чтобы запустить сервер Rails, необходимо создать новый проект и запустить его командой bin/rails s

Сервер сообщит о том, что он запустился, и выведет адрес http://127.0.0.1

, по которому можно открыть приложение том, что он запустился,

При создании нового веб-приложения Rails отдает на главной странице страницу-заглушку с логотипом фреймворка и текущей версией Rails и Ruby. Это можно увидеть, если открыть в браузере адрес, на котором запущен сервер.

Генерация контроллера

Мы можем заменить главную страницу приложения на нашу. Для этого необходимо сгенерировать контроллер и добавить ему роут index:

Отменить изменения мы можем командой bin/rails d controller:

Созданный контроллер:

При выполнении генератора будет добавлен роут в config/routes.rb

Метод get() создаст обработчик для адреса pages/index, который будет работать в контроллере PagesController.

По соглашению Rails будет искать по имени контроллера и метода обработчик. Если необходимо вывести другой шаблон, то можно сделать это с помощью метода метод render().

Чтобы на корневой странице открывалась наша страница, заменим в файле роутов метод:

Вызов root 'pages#index' позволяет добавить корневую страницу, которая будет обрабатываться контроллером PagesController методом index()

Контроллеры

Все контроллеры приложения Rails наследуются от контроллера, который наследуется от базового

Контроллеры и Вью

При создании контроллера с методом, были также созданы шаблоны по имени этого метода

По соглашению Rails будет искать шаблоны по имени контроллера и метода. Так для метода index() путь для вью будет app/views/pages/index.html.erb. В теле метода не нужно вручную указывать Вью.

Rails по умолчанию поставляется с шаблонизатором ERB. Он позволяет выводить HTML с помощью Ruby-кода. Важно помнить, что ERB - это обычный код на Ruby, который позволяет выполнять простую логику, например проходиться по коллекции и выводить список элементов.

Это можно проверить, добавив в app/views/pages/index.html.erb следующий код:

Комментарий мы не увидим, а строку Для конструкций знак = не используется. увидим несколько раз.

Хелперы

Предположим есть шаблон и в нём выводятся ссылки

В Rails используется хелпер link_to() для формирования ссылок

При создании роутов в config/routes.rb Rails создает автоматически хелперы. Их можно использовать, чтобы получить ссылки на страницы:

Хелпер root_path был создан автоматически. Он ведет на корневую страницу /. Если мы добавим в config/routes.rb новые роуты, то получим новые хелперы

Для получения ссылки на корневую страницу создается хелпер root_path. Список хелперов можно посмотреть в списке роутов http://localhost

/rails/routes или командой bin/rails routes

Шаблоны и Вью

Rails позволяет использовать базовый шаблон и отображать уникальный контент. Контент страницы будет выведен с помощью yield. Шаблоны находятся в директории app/views/layouts.

Пример базового шаблона app/views/layouts/application.html.erb

Страница app/views/pages/index.html.erb Содержит только уникальный контент

Добавим в базовый шаблон навигацию и удалим ее из вью

Теперь ссылки на страницы будут описаны в одном месте и отображаться на всех страницах

Рендер шаблонов в контроллере

Как мы помним, Rails сопоставляет имя метода и контроллера и выводит подходящий шаблон. Но если мы хотим вывести другой шаблон, мы можем сделать это явно:

Рендер частичных шаблонов

Частичные шаблоны (partials) используются для повторного использования кода. Они начинаются с символа подчеркивания. Рендер частичного шаблона app/views/layouts/shared/_links.html.erb

render partial: требует четкого указания пути и локальной передачи переменных. Обычный render использует переменные в том контексте запроса, в котором вызывается

Сам файл находится по следующему пути — app/views/pages/partial/_links.html.erb

Рендеринг статичных страниц

Вместо создания методов для каждой конкретной страницы можно использовать один метод. Вместо:

Используем метод show()

Чтобы в будущем воспользоваться хелпером и удобно работать с урлами, используем ресурсный роутинг (подробнее о нём в следующих уроках):

Ресурсный роутинг позволяет создавать роуты динамически. Имя страницы будет передаваться в параметрах путей. Например localhost

/pages/term_of_service, где term_of_service — будет параметром ID страницы. У статических страниц будет загружаться вью app/views/pages/show.html.erb

А уникальный для каждой страницы контент находиться в своем шаблоне. Имя шаблона будет начинаться с нижнего подчеркивания

  • app/views/pages/_about.html.erb
  • app/views/pages/_term_of_service.html.erb

Теперь мы можем использовать один хелпер page_path() и передавать ему параметр с ID страницы

Заключение

В этом уроке мы изучили создание статических страниц в Ruby on Rails, включая запуск сервера, генерацию контроллера и настройку роутов.

Мы узнали, как Rails автоматически сопоставляет методы контроллера с шаблонами представлений, что упрощает разработку, а также рассмотрели использование хелпера link_to() для создания ссылок.

Мы познакомились с базовыми шаблонами и их применением для отображения уникального контента, а также с рендерингом других шаблонов и частичных шаблонов для повторного использования кода.

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