0

我想对列求和。

在我的控制器中

         def index
          @performance_reports = PerformanceReport.all
         end

我的错误:

       undefined method `+' for #<PerformanceReport:0x4a55690>
74:         <td><%=  @performance_reports.sum(:clicks)%></td>

怎么了 ?

4

2 回答 2

4

尝试

 @performance_reports = PerformanceReport.select('*')

在视图中

<td><%=  @performance_reports.sum(:clicks)%></td>

基本上 PerformanceReport.all会加载整个表并返回你不能在数组上链接查询Array!!!PerformanceReport

PerformanceReport.select('*')将返回 ActiveRecord::Relation,您可以在关系上链接任何 AR 方法

我建议你阅读 rails lazing loading strategy Lazy loading (will_paginate sample)Rails Query Interface

很棒的导轨

于 2012-06-21T08:23:13.917 回答
1

sum是一个 ActiveRecord 方法,因此您不能在已选择的对象上使用它!ypu 可以做什么:

PerformanceReport.sum(:clicks)

因为那时数据库被查询!

于 2012-06-21T08:22:12.037 回答