【发布时间】:2012-12-31 15:16:39
【问题描述】:
有人可以解释“<%= render %>”和“<%= yield %> 与<% content_for :partial do %>/<% end %>”之间的区别吗?特别是从一个切换到另一个时路由如何变化,使用一个而不是另一个的好处,什么时候使用一个而不是另一个。 THIS 是我找到的最接近的解释,但对我来说还不够清楚。
我已经尝试了几天来解决这个问题,但似乎我尝试的每个配置要么接近,要么出错。
如果存在三个视图,aaa 和 bbb 和 ccc,并且每个视图都有一个 index.html.erb,但是 bbb 和 ccc 有一个 _content.html.erb 部分(由下划线表示)如何你能用render或yield在aaa中获得bbb或ccc部分吗?
以下作品:
aaa的 index.html.erb :
<div">
<%= render 'bbb/content' %>
</div>
和bbbs _content.html/erb :
<p>Content from bbb.</p>
但这不是:
aaa的 index.html.erb :
<div">
<%= yield :container %>
</div>
和bbbs _content.html/erb:
<% content_for :container do %>
<p>Content from bbb.</p> ### viewed in aaa
<% end>
而cccs _content.html.erb 什么都没有,或者content_for,但我仍然没有让aaa 的index.html 填充内容。
如果我使用渲染,我可以明确地将内容放入其中。但我认为使用yield :whatever 的好处将允许我选择填充它的内容,但我无法让它填充任何内容一旦我将它从渲染更改为产量。我还必须更新路由文件吗?如果是这样,我该如何选择用哪一个来填充它?这是否意味着它在控制器中?需要采取行动吗?
虽然我也有这取决于最初路由到哪个文件,但就像我说的那样,我认为我需要先了解两者之间的区别,然后才能开始使用部分文件来发挥我的优势。
【问题讨论】:
-
这似乎是这个问题的 DUP:stackoverflow.com/questions/6299851/…
-
我认为没有足够的澄清,特别是因为我无法让
yield工作,并且我研究了链接等,这就是为什么我要求进一步澄清或不同的解释。
标签: ruby-on-rails ruby ruby-on-rails-3