Во-первых, что такое потоковая передача? Зачем вам это?
Потоковая передача — это альтернативный метод рендеринга страниц сверху вниз (снаружи внутрь). Поведение рендеринга по умолчанию — наизнанку. Потоковая передача должна быть включена в вашем контроллере:
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's 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's 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>
person
rodamn
schedule
24.09.2015