0Pricing
Ruby Academy · Урок

Представления и отображение

Возвращайте ответы

«Представления и отображение» — бесплатный урок Ruby Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

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

Представление — это шаблон, формирующий ответ, отправляемый клиенту, обычно в формате HTML. Оно превращает данные, подготовленные контроллером, в страницу.

  • Представления находятся в app/views.
  • Они сгруппированы по контроллерам, например в app/views/articles.
  • Имя шаблона по умолчанию совпадает с именем действия.

Рендеринг по соглашению

По умолчанию действие отрисовывает шаблон, названный в его честь. Действие index контроллера ArticlesController отрисовывает app/views/articles/index.html.erb без явного вызова render.

def index
  @articles = Article.all
  # automatically renders articles/index.html.erb
end

Шаблоны ERB

Язык шаблонов по умолчанию — ERB (встроенный Ruby). Он сочетает HTML с Ruby:

  • <%= ... %> выводит значение.
  • <% ... %> выполняет код без вывода.
<h1>Articles</h1>
<% @articles.each do |article| %>
  <p><%= article.title %></p>
<% end %>

Макеты

Макет оборачивает каждое представление общей разметкой, например заголовком, навигацией и нижним колонтитулом. Макет по умолчанию app/views/layouts/application.html.erb содержит <%= yield %>, куда вставляется представление действия.

<!-- application.html.erb -->
<html>
  <body>
    <%= yield %>
  </body>
</html>

Частичные представления

Частичное представление — это повторно используемый фрагмент шаблона, имя файла которого начинается с символа подчёркивания. Отрисовывайте его с помощью render, чтобы не дублировать разметку.

<!-- _article.html.erb -->
<p><%= article.title %></p>

<!-- in index.html.erb -->
<%= render "article", article: @article %>

Рендеринг коллекций

Передача коллекции в render отрисовывает частичное представление один раз для каждого элемента — это идиоматическое сокращение. Rails выводит имя частичного представления из модели.

<%= render @articles %>

<!-- renders _article.html.erb for each article -->

Вспомогательные средства представлений

Rails предоставляет вспомогательные средства, которые безопасно создают HTML: link_to для ссылок, form_with для форм и image_tag для изображений. Они делают шаблоны чистыми и единообразными.

<%= link_to "View", article_path(@article) %>
<%= image_tag "logo.png" %>

Ответы в других форматах

Контроллеры могут возвращать не только HTML. render json: отправляет JSON для API, а respond_to обслуживает разные форматы в зависимости от того, что запросил клиент.

def show
  @article = Article.find(params[:id])
  render json: @article
end

Блоки respond_to

Используйте respond_to, чтобы обрабатывать несколько форматов в одном действии. Одно и то же действие может возвращать HTML браузеру и JSON клиенту API.

def show
  @article = Article.find(params[:id])
  respond_to do |format|
    format.html
    format.json { render json: @article }
  end
end

Коды состояния

Задавайте состояние HTTP-ответа с помощью status:. Используйте :ok (200), :created (201) после успешного создания и :unprocessable_entity (422), если проверка не пройдена, чтобы клиенты реагировали корректно.

render :new, status: :unprocessable_entity
render json: @article, status: :created

Экранирование и безопасность

ERB автоматически экранирует HTML в выводе <%= %>, что предотвращает межсайтовый скриптинг в пользовательских данных. Помечайте содержимое как безопасное с помощью raw или html_safe только при полной уверенности в его надёжности; неправильное использование снова открывает уязвимости XSS.

Быстрая проверка

Проверьте, насколько хорошо Вы понимаете представления и рендеринг.

Итоги: представления и рендеринг

Вы научились возвращать ответы:

  • Действия по соглашению отрисовывают соответствующее представление ERB.
  • Макеты оборачивают представления, а частичные представления позволяют повторно использовать фрагменты.
  • Вспомогательные средства, такие как link_to и form_with, создают HTML.
  • render json: и respond_to обслуживают API; задавайте правильные коды состояния.
  • ERB экранирует вывод, предотвращая XSS.

На этом курс «Контроллеры и маршрутизация» завершён.

Часто задаваемые вопросы

Урок «Представления и отображение» бесплатный?

Да — полный текст урока «Представления и отображение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Представления и отображение»?

Возвращайте ответы Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Представления и отображение»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Маршруты и ресурсы
  2. Контроллеры и действия
  3. Строгие параметры
  4. Представления и отображение
← Назад к Ruby Academy