Может кто-нибудь объяснить разницу между "<%= render %>
" и "<%= yield %>
с помощью <% content_for :partial do %>
/<% end %>
"? в частности, как изменяется маршрутизация при переходе от одного к другому, преимущества использования одного над другим, когда это целесообразно использовать один над другим. ЭТО является самым близким объяснением, которое я нашел, но для меня это не совсем понятно.
Я пытаюсь несколько дней обертывать вокруг себя эту тему, но кажется, что каждая конфигурация, которую я пытаюсь сделать, либо закрывается, либо вылетает.
Если theres - три вида, aaa
и bbb
и ccc
, и каждый имеет index.html.erb
, но bbb
и ccc
имеют _content.html.erb
частичный (обозначается подчеркиванием), как вы можете выполнить частичное 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
_content.html.erb ничего не будет, или content_for
, но я все равно не получаю aaa
index.html для заполнения содержимым.
Если я использую рендер, я могу явно разместить содержимое. Но я думал, что преимущество использования yield :whatever
позволит мне выбрать, что его заполнить, и я не могу заставить его заполнять что-либо как только я изменю его с рендеринга на урожай. Нужно ли мне также обновлять файл маршрутов? Если да, как мне выбрать, какой из них нужно заполнить? Означает ли это его в контроллере? и требуется действие?
У меня также есть то, что это зависит от того, какой файл изначально перенаправляется, но, как я уже сказал, я думаю, мне нужно понять разницу между этими двумя, прежде чем я начну использовать частичные варианты в свою пользу.