2012-05-14 64 views
0

如何將集合傳遞給包含塊的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到部分爲好,這樣我就可以ajaxify它。

如果我只有一個街區,我會做

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

,並在部分

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

但是,如果我有兩大塊,我怎麼可以通過@收集-A和@collection -B進入部分?

或者我看着這個錯誤的方式?感謝任何指針。

回答

4

嘗試:

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

在部分只是刪除@

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

感謝,這看起來很完美。我實際上已經嘗試過,但打了折扣。似乎記得以爲我可以傳遞單個變量而不是集合/數組。一定是做錯了,因爲它似乎現在正在工作!快速提問:如何在使用此方法時傳遞pagination':param_name'。我假設'..:locals => {:param_name =>:my_page}%>'。然後在部分的<%= will_paginate集合中,:param_name => param_name%>'。但是這似乎不適合我。難道我做錯了什麼? –

+0

是的,你必須建立以下locals:':locals => {:collection => collectionA,:param_name =>:my_page}''和你的'will_paginate'相關的建議似乎是正確的。你試過了嗎?它應該工作。 – jdoe

+0

我一直在玩這一段時間,但仍然有一些問題。一切都可以在標準設置下運行 - 在partial:'<%@ users.each do | user |'中調用partial:'<%= render:partial =>'users/user'%> %> ... <% end %><%= will_paginate @users%>。但是,只要我改變它以傳遞一個本地 - 調用partial:'<%= render:partial =>'users/user',:locals => => {:users => @users}%>'部分:'<%users.each do | user | %> ... <% end %><%= will_paginate users%> - 停止工作。這是否發生在其他人身上?或者只是我? –

相關問題