Ruby On Rails
Теория: Статические страницы
В этом уроке познакомимся с созданием статических страниц с помощью 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
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() для создания ссылок.
Мы познакомились с базовыми шаблонами и их применением для отображения уникального контента, а также с рендерингом других шаблонов и частичных шаблонов для повторного использования кода.
В завершение урока мы рассмотрели ресурсный роутинг, который позволяет динамически создавать маршруты для статических страниц, что делает код более организованным и удобным для поддержки.

