Контроллер и представление

Главная / Контроллер и представление

В этом посте мы затронем создание динамичного контента. Конкретно мы рассмотрим:

  • Как создать контроллер
  • Действия
  • Встроенный Ruby (ERB)

Создание контроллера

Контроллер содержит действия (методы Ruby) и координирует веб-запросы.

Rails может быстро сгенерировать контроллер с 0 или более действий с их ассоциированными представлениями.

Генерация происходит следующим образом:

rails generate controller controller_name [action1 action2]

Команда generate может быть сокращена до g.

Попробуем сгенерировать контроллер greeater, «hello» будет именем действия и именем представления.

Таким образом, мы получаем контроллер greeter.rb в папке app/controllers. Также получаем файл app/views/greeter/hello.html.erb.

Если вы заглянете в этот файл представления, вы увидите, что там нет типичных для HTML элементов Doctype, head или body. Мы увидим немного позже, почему.

Как это выглядит?

Встроенный Ruby (ERB)

Сгенерированный файл представления выглядит как типичный HTML-файл, но он также имеет расширение .erb.

ERB это библиотека шаблонизации (похожая на JSP, к примеру), которая позволяет вам встраивать Ruby в ваш HTML.

Стоит выучить два паттерна:

  • <% ...код ruby... %> — рассчитывает код
  • <%= ...код ruby... %> — возвращает рассчитанный код

И еще раз, идея ERB в том, чтобы иметь возможность включать динамичный контент в статичный HTML-контент, чтобы смешивать их вместе.

Так что, к примеру, мы можем переписать нашу приветственную страницу.

В этом случае в первой строке мы создаем переменную, которая содержит массив имен. Затем мы выводим его с помощью второго паттерна, который отличается знаком равенства в начале.

Теперь при обновлении страницы, она показывает случайное имя из списка.

Как выглядит контроллер

Итак, это была часть про представление. Как же выглядит сам контроллер?

hello это просто действие. Это обычный метод Ruby, в данном случае пустой.

И это работает.

А что если мы хотим добавить действие «goodbay» в этот контроллер, и также goodbay.html.erb в папку app/views/greeter?

Давайте попробуем.

Создаем файл для view в соответствующей папке, затем редактируем контроллер.

Заходим на страницу /greeter/goodbay:

Не сработало. Так как в этом случае не хватает компонента, который мы собираемся рассмотреть в следующем посте.

В итоге

Контроллеры содержат действия (методы).

ERB позволяет рассчитывать выражения с помощью паттерна <% expression %> или выводить их с помощью <%= expression %>.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *