一直在教自己如何构建一个简单的ruby / rails网站。现在尝试找出数据操作的警告。小组正在工作,我如何"总和"所有的栏目?
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 :(得分:1)
@sum = @gdcomets.map(&:data).sum
:data是您想要求和的列的名称。
答案 1 :(得分:0)
你可以获得更好的性能,让SQL做驴工作总结一切:
Dcomet.group(:site).sum(:data)
其中:data是要汇总的列的名称。这将返回一个散列,其中键是站点值,值是该站点的相应总和