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