2017-03-16 75 views
0

我創建了此代碼,可以獲取我需要的信息。Rails:總計按組列出

def index 
    @votes = Vote.all 
    @originalitysum = Vote.group(:widget_id).sum(:originality) 
end 

它返回一個哈希:

{188=>5, 160=>2} 

我現在需要匹配的關鍵WIDGET_ID和返回值。即:

如果WIDGET_ID是188回5.

<% @votes.group(:widget_id).each do |vote| %> 
    <tr> 
    <td><%= vote.widget.name %></td> 
    <td><%= vote.widget.store %></td> 
    <td><%= %></td> <!-- This needs to be the total Originality --> 
    <td><%= vote.interest %></td> 
    <td><%= vote.rating %></td> 
    </tr> 
<% end %> 

我願意改變這個如果一些其他的方式更有意義。

回答

0

想通了。

控制器

def index 
@votes = Vote.all 
@originalitysum = Vote.select([:widget_id, :originality]).group('widget_id').sum(:originality) 
@votecount = Vote.group(:widget_id).count(:originality) 
@votes = Vote.select(:widget_id, 
    "SUM(originality) as originality_sum", 
    "SUM(interest) as interest_sum", 
    "SUM(rating) as rating_sum").group(:widget_id).order("rating_sum DESC") 
end 

視圖

<% @votes.group(:burger_id).each do |vote| %> 
    <tr> 
    <td><%= vote.widget.name %></td> 
    <td><%= vote.widget.store %></td> 
    <td><%= vote.originality_sum %></td> 
    <td><%= vote.interest_sum %></td> 
    <td><%= vote.rating_sum %></td> 
    </tr> 
<% end %> 

由於這個答案在這個環節上,我能夠解析它在一起。 Group by a column and then get the sum of another column in Rails

額外的好處是,它使我可以輕鬆地總結其他列以及。

0

你可以得到創意和與@originalitysum[vote.widget.id]