Добавление отображений
Если ваш сервер запустился и вы перейдёте по адресу 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 отображения