Мультиблог на Ruby on Rails. Создание контроллера и вида. Вывод данных. Урок 4.

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

  1. Модель. Собственно, это у нас уже есть. Почитать подробнее можно в уроке по созданию модели.  
  2. Прописать маршрут.
  3. Создать контролер. 
  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, в которую и будет попадать каждый итерируемый пост. Теперь если обновить страничку, то результатом наших изменений в коде, станет отображение записей в сыром виде: 

Но такой вывод хорош лишь тогда, когда программисту нужно иметь примерное представление о содержимом записи. Для пользователя, понятное дело, такое отображение никуда не годится. Поэтому на следующем уроке займёмся оформлением. 

Изменения же в этом уроке можно посмотреть в коммите