如何将集合传递给包含块的Rails部分?

时间:2012-05-14 10:10:39

标签: ruby-on-rails

如何将集合传递给包含块的Rails部分。 (或者,如何绕过Rails魔术)。

我有一种感觉,我从错误的角度思考这个问题。有人能指出我正确的方向吗?

假设我有一个包含两个重复块的索引,如下所示:

<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>

我的第一轮干预可能看起来像这样。

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

...

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

但是,如果我需要将will_paginate移动到部分中,那么我可以将其解析。

如果我只有一个街区,我会做

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

和部分

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

但如果我有两个区块,我怎样才能将@ collection-A和@ collection-B传递给部分?

或者我是以错误的方式看待这个?谢谢你的任何指示。

1 个答案:

答案 0 :(得分:4)

尝试:

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

部分删除@

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