1

常に同じ構造で異なるコンテンツを持つ html コードのブロックを異なる時間にレンダリングする必要があるページがあります。レイアウトで構造を抽出し、異なるパーシャルを作成して、同じレイアウトでレンダリングすることを考えました。

メインページ

<body>
  <%= render partial: 'a', :layout => "layouts/card"%>
  <%= render partial: 'b', :layout => "layouts/card"%>
  <%= render partial: 'c', :layout => "layouts/card"%>
</body>

レイアウト「layouts/card」は次のようになります。

<div class="slide red">   
 <div class="row full-width">
    <div class="large-3 columns">
      <%= yield :content_a %>
    </div>
 </div>
 <div class="large-9 columns">
    <%= yield :content_b%>
 </div>
</div>

部分的な「a」は次のようになります。

<% content_for :content_a do %>
 <div>
  <div>
   Hello A
  </div>
    Hello A2
 </div>
<%end%>
<% content_for :content_b do %>
 <div>
  <div>
   Hello B
  </div>
    Hello B2
 </div>
 <img src="..."/>
<%end%>

部分 b は両方のコンテンツが異なり、非常に可変であるため、何千ものパラメーターを渡すことができません

しかし、実際には機能せず、2 つの yield フィールドのいずれにもコンテンツがないレイアウトをレンダリングします。私は何を間違っていますか?

4

2 に答える 2

0

レイアウトのyieldステートメントは、content_forの前に最初にプロセスを取得していると思います。その場合、yield は何も置き換えられません。これに対する解決策があるかどうかはわかりません。

コードをドライアップしようとしているだけで、実際にはレイアウトではないため、ロジックを次のように変更するとどうなりますか。

_a.html.erb

<div class="slide red">   
 <div class="row full-width">
    <div class="large-3 columns">
      <%= content_a%>
    </div>
 </div>
 <div class="large-9 columns">
    <%= content_b%>
 </div>
</div>

メインページ

<body>
  <%= render partial: 'a', :locals => {:content_a => "Hello A", :content_b => "Hello B"}%>
  <%= render partial: 'a', :locals => {:content_a => "Hello C", :content_b => "Hello D"}%>
  <%= render partial: 'a', :locals => {:content_a => "Hello E", :content_b => "Hello F"}%>
</body>
于 2013-10-15T18:11:27.990 に答える
0

これを試して:-

 <%= render partial: 'a', :layout => "layouts/card"%>
于 2013-10-15T18:14:54.113 に答える