嗨我有一张表,列出了不同的值。现在我想在我的表中添加一个总值来计算每列的值,并将其添加到具有总值的列中。我该怎么做呢?是否可以在视图中以简单的方式执行此操作,或者我是否必须在模型中执行此操作?谢谢你的帮助!
<div class="chart-data">
<table>
<caption>Data</caption>
<thead>
<tr>
<% statistic.column_titles.each do |column| %>
<th><%= column %></th>
<% end %>
<th>Total</th>
</tr>
</thead>
<tbody>
<% statistic.rows.each do |row| %>
<tr>
<th scope="row"><%= row.title %></th>
<% row.data.each do |column| %>
<td><%= column %></td>
<% end %>
</tr>
<------- Here i want to have the code that sums the values from the columns above to form the 'Total'
<% end %>
</tbody>
</table>
</div>
答案 0 :(得分:2)
简单的解决方案是维护一个汇总列的变量,然后将其用于最后的总计。
答案 1 :(得分:2)
class Row < ActiveRecord::Base
def total_spent
sum(:data)
end
end
<tbody>
<% @rows.each do |row| %>
<tr>
<th scope="row"><%= row.title %></th>
<% row.data.each do |column| %>
<td><%= column %></td>
<% end %>
</tr>
<td><% row.total_spent %></td>
<% end %>
</tbody>
当然假设行是模型,您可以在行模型中移动此逻辑。如果您愿意,也可以缓存页面。
答案 2 :(得分:0)
如果您的数据是针对数据库的ActiveRecord查询的结果,您可以要求数据库执行对所有列进行求和的工作。这将是一个额外的查询,但会很快运行,因为这是数据库的目的。