3

レンダリングしようとしているこのパーシャルがあるとしましょう

#layouts/_subheader.html.erb
<div class="subheader">
   <%= yield %>
   <%= yield :filters %>
</div>

このパーシャルをこのようなビューで使用すると

<%= render 'layouts/sub_header' do %>
   <h2> Content For Yield </h2>
   <% content_for :filters do %>
      <h2> Content for Filters </h2>
   <%  end %>
<% end %>

HTML出力を次のように取得しています

<div class="subheader">
   <h2> Content For Yield </h2>
   <h2> Content for Filters </h2>
</div>

yieldこれは期待どおりに機能しますが、部分的にタグの順序を変更すると問題が発生します

上記の代わりに、パーシャルを次のように書き換えると

#layouts/_subheader.html.erb
<div class="subheader">
   <%= yield :filters %>
   <%= yield %>
</div>

私は次のように出力されています

<div class="subheader">
   <h2> Content For Yield </h2>
</div>

content_for :filtersレンダリングされていません。

私はここで何を間違っていますか?これは正しい動作ですか、それとも何か間違っていますか?

yield :filtersのコンテンツをプレーンの前に表示する必要がある場合はどうすればよいですかyield

編集:-

私が試してみました

#layouts/_subheader.html.erb
<div class="subheader">
   <%= content_for :filters %>
   <%= yield %>
</div>

しかし、うまく機能していないようです。

4

1 に答える 1