2017-03-16 110 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]