2014-06-05 66 views
0

一直在教自己如何構建一個簡單的ruby/rails網站。現在試圖找出數據處理的注意事項。小組正在工作,我如何「總結」所有列?RoR:如何使查詢返回每個組的總和值?

index.html.erb

<table> 

<tr> 
<th>Site</th> 
<th><7days</th> 
<th>>7days</th> 
<th>>30days</th> 
<th>>90days</th> 
<th>>180days</th> 
<th>>365days</th> 

</tr> 
<tr> 

<% @gdcomets.each do |dcomet| %> 

<td><%= dcomet.site %></td> 
<td><%= @sum1 %></td> 
<td><%= @sum2 %></td> 
<td><%= @sum3 %></td> 
<td><%= @sum4 %></td> 
<td><%= @sum5 %></td> 
<td><%= @sum6 %></td> 

</tr> 

<% end %> 

</table> 

dcomets_controller

class DcometsController < ApplicationController 

# GET /dcomets 
# GET /dcomets.json 
def index 

@dcomets = Dcomet.all 

@gdcomets = Dcomet.group(:site) 

@sum1 = @gdcomets.map(&:ls7day).sum 
@sum2 = @gdcomets.map(&:gt7day).sum 
@sum3 = @gdcomets.map(&:gt30day).sum 
@sum4 = @gdcomets.map(&:gt90day).sum 
@sum5 = @gdcomets.map(&:gt180day).sum 
@sum6 = @gdcomets.map(&:gt365day).sum 


respond_to do |format| 
    format.html # index.html.erb 
    format.json { render json: @gdcomets } 
end 
end 
end 

回答

0

你會得到更好的性能讓SQL做總結的一切繁瑣的工作:

Dcomet.group(:site).sum(:data) 

其中:數據是要總結列的名稱。這將返回一個散列,其中鍵是網站值,並且該值相應的總和爲該網站

+0

我該如何製作:數據爲每個列的變量? – user3712834

+0

更好的問題,我該如何處理這個散列使其成爲表格的一部分? – user3712834

+0

您可以遍歷散列或對這些值進行求和。由你決定。查看Hash文檔:http://ruby-doc.org/core-2.1.2/Hash.html。也可以在命令行上查看輸出的內容。 – ReggieB

1
@sum = @gdcomets.map(&:data).sum 

:數據是要總結的列名。

+0

我補充說我的index.html或控制器? – user3712834

+1

在控制器 – Iceman

+0

我今天下午已經搞亂了很多,有些東西仍然不能正常工作。我更新了上面的兩個文件。 – user3712834