<%= render %>
誰かが " " と " <%= yield %>
/ <% content_for :partial do %>
"の違いを説明できますか<% end %>
? 具体的には、あるものから別のものに切り替えるときにルーティングがどのように変化するか、一方を他方よりも優先して使用する利点、一方を他方よりも優先して使用することが実際的な場合です。これは私が見つけた最も近い説明ですが、私には十分に明確ではありません。
私はこれに頭を悩ませようと数日間試みてきましたが、試した各構成は近づくか、エラーになるようです。
ととの3 つのビューが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>
s _content.html bbb
/erb :
<p>Content from bbb.</p>
しかし、これはしません:
aaa
の index.html.erb :
<div">
<%= yield :container %>
</div>
s _content.html bbb
/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
何を入力するかを選択できるようになり、変更するとすぐに何かを入力することはできません。レンダリングから生成まで。ルートファイルも更新する必要がありますか? もしそうなら、どのように入力するかを選択するにはどうすればよいですか? それはコントローラーにあるということですか?アクションが必要ですか?
また、最初にルーティングされるファイルに依存することもありますが、前述したように、パーシャルを有利に使用する前に、2 つの違いを理解する必要があると思います。