0

ブロックを含む Rails パーシャルにコレクションを渡す方法。(または、Rails マジックを回避する方法)。

私はこれについて間違った角度から考えているような気がします。誰かが私を正しい方向に向けることができますか?

次のように、2 つのブロックが繰り返されるインデックスがあるとします。

<div class="content">
  <table>
    <thead>
      <tr>
        <th>COL1</th>
        <th>COL2</th>
        <th>COL3</th>
      </tr>
    </thead>
    <tbody>
      <% @collectionA.each do |a| %>
        <tr>
          <td><%= a.col1 %></td> 
          <td><%= a.col2 %></td>
          <td><%= a.col3 %></td>
        </tr>
      <% end %>
        <tr><%= will_paginate @collectionA %></tr>
    </tbody>
  </table>

  <br />

  <table>
    <thead>
      <tr>
        <th>COL1</th>
        <th>COL2</th>
        <th>COL3</th>
      </tr>
    </thead>
    <tbody>
      <% @collectionB.each do |b| %>
        <tr>
          <td><%= b.col1 %></td> 
          <td><%= b.col2 %></td>
          <td><%= b.col3 %></td>
        </tr>
      <% end %>
        <tr><%= will_paginate @collectionA %></tr>
    </tbody>
  </table>
</div>

DRYing の最初のラウンドは、次のようになります。

...
<tbody>
  <%= render :partial => 'collections', :collection => @collectionA %>
</tbody>
<%= will_paginate @collectionA %>

...

<tbody>
  <%= render :partial => 'collections', :collection => @collectionb %>
</tbody>
<%= will_paginate @collectionB %>
...

しかしwill_paginate、パーシャルを ajax 化できるように、パーシャルにも移動する必要がある場合はどうでしょうか。

ブロックが1つしかない場合は、そうします

<tbody>
  <%= render :partial => 'collection' %>
</tbody>

そして部分的に

<% @collection.each do |col| %>
  STUFF
<% end %>
<%= will_paginate @collection %>

しかし、2 つのブロックがある場合、@collection-A と @collection-B をパーシャルに渡すにはどうすればよいでしょうか?

それとも、私はこれを間違った方法で見ていますか? ご指摘ありがとうございます。

4

1 に答える 1

4

試す:

<%= render :partial => 'collection', :locals => {:collection => collectionA} %>

部分的に削除するだけ@です:

<% collection.each do |col| %>
  STUFF
<% end %>
<%= will_paginate collection %>
于 2012-05-14T10:19:59.473 に答える