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