Ответ 1
Прежде всего, что такое потоковое вещание? Почему вы его используете?
Потоковая передача - это альтернативный способ отображения страниц сверху вниз (внешний). Поведение рендеринга по умолчанию - наизнанку. Потоковая передача должна быть включена в вашем контроллере:
class MyController
def action
render stream: true # Streaming enabled
end
end
В соответствии с документацией:
Потоки можно считать излишними для облегченных действий как новый или редактировать. Реальная польза от потоковой передачи действия, которые, например, выполняют много запросов в базе данных.
Итак, если вы не используете потоковое вещание, есть ли разница?
Да.
Разница заключается в том, что шаблон может определять несколько блоков контента, вызывая content_for
несколько раз. Это позволит объединить блоки и передать их в макет:
# layout.html.erb
<div class="heading"><%= yield :surprise %></div>
<div class="body">
<p><%= yield %></p>
<p>But it not very interesting...</p>
</div>
# template.html.erb
<%= content_for :surprise, "Hello" %>
I've got your content!
<%= content_for :surprise, ", World!" %>
# Generated HTML
<div class="heading">Hello, World!</div>
<div class="body">
<p>I've got your content!</p>
<p>But it not very interesting...</p>
</div>
Так как provide
не продолжает поиск предоставленного шаблона, только шаблон, переданный первому вызову provide
, будет отправлен в шаблон:
# layout.html.erb
<div class="heading"><%= yield :title %></div>
# template.html.erb
<%= provide :title, "Foo" %>
<%= provide :title, "bar" %>
# Generated HTML
<div class="heading">Foo</div>