2010-02-21 69 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。然后你可以在视图中迭代它。

不过,看起来很奇怪,即使有一个计数列,你甚至有多个具有相同名称的项目。您应该更改用于创建新项目的代码,以便只创建一个新项目(如果具有该名称的项目不存在),否则应该增加现有项目的计数。

相关问题