Ruby on Rails: MVC-модель и создание страниц

Ruby on Rails основан на модели MVC (Model-View-Controller), распространённой во многих фреймворках. Модель описывает взаимодействие трёх компонентов: модели, представления и контроллера.

MVC-модель: взаимодействие компонентов

Рассмотрим взаимодействие компонентов на примере пользовательского запроса:

  1. Пользователь (браузер): Отправляет запрос (например, на главную страницу, страницу контактов или статей).
  2. Контроллер: Обрабатывает запрос, определяя целевую страницу.
  3. Модель: При необходимости контроллер обращается к модели. Модель может взаимодействовать с базой данных, API (например, Facebook API) или выполнять другие действия. Результат передаётся обратно контроллеру.
  4. Представление (View): Контроллер передаёт данные из модели в представление – HTML-шаблон. Данные (например, из базы данных) подставляются в шаблон.
  5. Результат: Сформированная HTML-страница отправляется в браузер пользователя.

Это циклический процесс: запрос → контроллер → модель → контроллер → представление → браузер.

Структура проекта и создание контроллеров

В структуре проекта Rails реализована MVC-архитектура. В корневой папке проекта находятся три основных папки:

  • app/controllers: Содержит контроллеры. Главный контроллер — application_controller.rb.
  • app/models: Содержит модели (в данном примере пока пусты).
  • app/views: Содержит HTML-шаблоны с расширением .html.erb. Расширение .erb указывает на использование Ruby-синтаксиса в HTML. В шаблонах динамически подключаются мета-теги, стили и JavaScript. Папка layouts содержит общий шаблон для всех страниц. Благодаря этому, большая часть HTML-кода остаётся неизменной, изменяется только содержимое, передаваемое из контроллера.

Создание контроллера PostsController и главной страницы

Создадим контроллер для статей (постов) и главную страницу. Для создания контроллера используем терминал:

rails generate controller posts

Это создаст контроллер app/controllers/posts_controller.rb, папку с представлениями app/views/posts и вспомогательные файлы (helpers).

В app/controllers/posts_controller.rb создадим метод index:

def index
end

Этот метод будет обрабатывать запрос на главную страницу.

В app/views/posts/index.html.erb создадим простой HTML-код:

<h3>Главная страница</h3>

Настроим маршрутизацию в config/routes.rb. Удалим комментарий и добавим строку:

root to: 'posts#index'

Это назначает метод index контроллера posts для обработки запроса на корневой URL (/). Запустим сервер и убедимся, что отображается главная страница.

Создание контроллера AboutController и страницы «О нас»

Создадим контроллер для статической страницы «О нас»:

rails generate controller about

Создадим файл app/views/about/about.html.erb:

<h1>Страница про нас</h1>

В config/routes.rb добавим маршрут:

get 'about', to: 'about#about'

В контроллере app/controllers/about_controller.rb:

def about
  @heading = "Страница про нас"
  @text = "Немного текста"
end

В шаблоне app/views/about/about.html.erb выведем переменные:

<h1><%= @heading %></h1>
<p><%= @text %></p>

Обновим страницу и убедимся, что отображается страница «О нас».

В этом уроке мы рассмотрели модель MVC в Ruby on Rails и научились создавать простые статические страницы. Дальнейшее изучение позволит создавать более сложные и динамичные веб-приложения.

Что будем искать? Например,программа