Добавление отображений

Если ваш сервер запустился и вы перейдёте по адресу http://DOCKER_IP:3000/todos, то получите сообщение об отсутствии действия. Давайте его добавим.

Во-первых, что бы мы хотели вывести? Действие “index” в основном используется для выводда списка, в нашем случае для вывода списка todos. Вначале мы получим из базы данных все наши Todos в действии index.

Открыв файл app/controllers/todos_controller.rb, вы должны увидеть следующее:

class TodosController < ApplicationController
end

Это создаст новый класс Controller для нас, который мы можем поместить наше действие. Между строками добавьте следующее:

  def index
    @todos = Todo.all
  end

Следующий код определяет новый метод для Controller объекта - в этом контексте называемым “действием”. Когда оно выполняется (при переходе браузера на адрес /todos) он определит переменную, которая спросит Todo-модель для всех Todos в базе данных. Переменная также будет передана в отображение. Это вы скоро увидите.

Как только вы сохраните файл и обновите страницу в браузере, то вы увидите другую ошибку - но не волнуйтесь! Rails всегда пытается сообщить вам что не так наилучшим способом, чтобы вы могли исправить ошибки. В нашем отдельном случае всплывёт ошибка Template is missing - Отсутствует шаблон, давайте добавим его. Помните как ранее мы сравнивали отображения с шаблонами? Для добавления “шаблона” создадим новый файл “index.html.erb” в app/views/todos.

Вы только что создали шаблон! Обратите внимание на окончание .erb, которое сообщает Rails, что это ERB-шаблон: шаблон, который позволяет вам запускать Ruby, чтобы сделать ваш HTML “динамичным”, что значит что если меняется база данных, то меняется html.

  • Если вы хотите просто запустить Ruby код в вашем шаблоне, то вы обворачиваете его в <% ... %>
  • Если вы хотите вывести что-то из Ruby используйте <%= ... %>

Во-первых, покажем сколько у нас есть Todos. Сделаем запрос к переменной @todos и узнаем какой у неё размер:

<%= @todos.size %>

Добавим это к шаблону, сохраним и обновим страницу. Вы должны увидеть номер страницы, скорее всего это будет “0”, так как мы ещё не добавляли никаких todos. Давайте дальше выведем todos в виде неупорядоченого списка (

    ), добавим для этого ещё несколько элементов.

Мы будем проходить через каждый todo в @todos и выводить его описание. Код, который вы написали будет выглядеть так:

<ul>
  <% @todos.each do | todo | %>
    <li><%= todo.description %></li>
  <% end %>
</ul>

Страница в браузере может по-прежнему выглядеть пустой, но мы уже всё сделали для добавления todos!
�� Добавление Todos index отображения