首先,什么是流媒体?你为什么要使用它?
流式传输是自上而下(由外而内)呈现页面的替代方法。默认呈现行为是由内而外的。必须在您的控制器中启用流式传输:
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>