2011-01-30 95 views
2

我有一個需要集合的部分,遍歷顯示各個項目的集合。Rails根據集合大小渲染部分倍數

下面是代碼:

的部分:

<% for point in @points %> 
<div id="im" style="float:left;width:80px;height:90px;padding:5px;border:solid 1px #D3D3D3; margin:5px; "> 
    <img width="80" height="80" src="\uploaded\<%= point.id %>.gif" /> 
    <%= link_to_remote "&nbsp;&nbsp;&nbsp;Delete", :url => { :action => "delete_point", :id => point.id }, :before => "Element.show('spinner')", :complete => "Element.hide('spinner')" %>   
</div> 
<% end %> 

來自控制器的RJS:

page.replace_html :points_partial, :partial => 'points', :collection=>@points 

出於某種原因,該部分是由物品的量在所渲染的採集。如果集合中有十個項目,則呈現部分時間。

這傢伙有類似的問題,但它與佈局有關。

Render partial in Ruby on rails a collection is multiplying items

它快把我逼瘋了,因爲它應該是簡單,所有其他的諧音沒有任何困難的工作。

回答

3

:collection導致控制器遍歷@points並呈現局部一次集合中的每個項目。如果將局部設置爲僅渲染一個點,則控制器代碼應該按預期工作。

順便說一句,在Rails 3中,你可以使用<%= render @points %><%= render :partial => "points/point", :collection => @points %>

+1

我會去一個不同的看法,大概是這樣的一個快捷方式:`如果@ points.nil? render:action =>「index」end` – weltraumpirat 2011-01-30 21:35:35