Мультиблог на Ruby on Rails. Создание контроллера и вида. Вывод данных. Урок 4.
Поскольку у нас уже есть данные в базе данных, то пришло время заняться их выводом. Для этого нам понадобится:
- Модель. Собственно, это у нас уже есть. Почитать подробнее можно в уроке по созданию модели.
- Прописать маршрут.
- Создать контролер.
- Создать view (вид).
Определение маршрута
Если взглянуть на исходный шаблон, то там на главной странице выводятся все посты. Значит нам нужно определить маршрут, который будет сопоставлять адрес в строке браузера с контролером, который отвечает за вывод постов на главной странице. Для этого в файле config/routes.rb пропишем следующий маршрут:
root "posts#index"
Маршрут root отвечает за главную страницу, а строка "posts#index" говорит о том, что при открытии главной страницы, будет происходить обращение к action index, контролера Posts. Такого контролера у нас пока что нет.
Создание контролера
Если вкратце, то контролер отвечает за то, чтобы получить данные из модели и передать их во view файл. Для этих целей в папке app/controllers создадим файл posts_controller.rb со следующим содержимым:
class PostsController < ApplicationController def index @posts = Post.all end end
Здесь в переменную posts мы получаем все посты из модели Post. Однако же, если открыть главную страницу, то фреймворк будет ругаться на то, что у нас не указан шаблон:
Создание View
Поскольку контроллер у нас называется posts, а action index, то контроллер по умолчанию будет искать файл index.html.erb в папке views/posts. Значит давайте по данному пути создадим такой файл со следующим содержимым:
<h1>Список записей</h1> <%= @posts.each do |post| %> <% end %>
Здесь мы перебираем в цикле, с помощью конструкции each, все записи и выводим содержимое локальной переменной post, в которую и будет попадать каждый итерируемый пост. Теперь если обновить страничку, то результатом наших изменений в коде, станет отображение записей в сыром виде:
Но такой вывод хорош лишь тогда, когда программисту нужно иметь примерное представление о содержимом записи. Для пользователя, понятное дело, такое отображение никуда не годится. Поэтому на следующем уроке займёмся оформлением.
Изменения же в этом уроке можно посмотреть в коммите.