如何从表列添加值?

时间:2010-11-15 09:36:24

标签: ruby-on-rails ruby

嗨我有一张表,列出了不同的值。现在我想在我的表中添加一个总值来计算每列的值,并将其添加到具有总值的列中。我该怎么做呢?是否可以在视图中以简单的方式执行此操作,或者我是否必须在模型中执行此操作?谢谢你的帮助!

<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>

3 个答案:

答案 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查询的结果,您可以要求数据库执行对所有列进行求和的工作。这将是一个额外的查询,但会很快运行,因为这是数据库的目的。