2010-02-21 16 views
-1

例如,測試表這樣做總共相同的元素,並與paginating_find顯示t?

|id|name |item_id|num| 
|1 |apple |1  |1 | 
|2 |orenge |2  |1 | 
|3 |orenge |2  |1 | 
|4 |pear |3  |1 | 
|5 |apple |1  |1 | 
..... 

在控制器,

@items = Test.find(:all, :page=>{:size=>20, :current=>params[:page]}) 

我使用paginating_find插件。

考慮,

<% @items.each do |item| %> 
<%=h item.name %> x <%= item.num %><br /> 
<% end %> 
<%= link_to "before", {:page => @items.previous_page} if @items.previous_page? %> 
<%= paginating_links(@items, :window_size => 20) %> 
<%= link_to "next", {:page => @items.next_page} if @items.next_page? %> 

apple x 1 
orenge x 1 
orenge x 1 
pear x 1 
apple x 1 

..... 

我應該怎麼做才能使其下面的方法是什麼? (該表的結構不會改變。)

apple x 2 
orenge x 2 
pear x 1 
..... 

回答

0

您可以使用和與:group參數,總結它們具有相同名稱的所有項目的計數:

@items = Test.sum("count", :group => "name") 

這會給你一個形式爲name => count的OrderedHash。然後你可以在視圖中迭代它。

不過,看起來很奇怪,即使有一個計數列,你甚至有多個具有相同名稱的項目。您應該更改用於創建新項目的代碼,以便只創建一個新項目(如果具有該名稱的項目不存在),否則應該增加現有項目的計數。

相關問題