为什么我收到此错误:未定义的方法`stats_by_day'

时间:2013-07-19 02:55:37

标签: ruby-on-rails ruby

我正在构建一个Rails 4应用程序,但我遇到了这个错误。我确信这对我以外的人来说非常明显。

这是我的帮助文件,它在第10行引发了这个错误:

module StatsHelper

def stats_chart_data
    @start = "january 1, 2013".to_date
    @start = @start - (@start.wday).days
    stats_by_day = Stat.total_grouped_by_day("january 1, 2013".to_date)    
    (@start..Date.today).step(7).map do |date| 
        {
            date: date,
            attendance: stats_by_day(date).first.try(:total_attendance) || 0  #error shows up here
        }
    end
end
end

相关的模型文件是:

class Stat < ActiveRecord::Base
belongs_to :campus

validates :attendance, presence: {message: "cannot be blank"}
validates :campus_id, presence: {message: "Please choose which campus"}
validates :date, presence: {message: "Please enter date"}
validates :time, presence: {message: "Please enter time"}

def self.total_grouped_by_day(start)
    stats = where(date: start.beginning_of_day..Time.zone.now)
    stats = stats.group("date")
    stats = stats.select("date, sum(attendance) as total_attendance")
    stats.group_by { |o| o.date.to_date }
  end
end

我正在制作RailsCasts图表,但无法弄清楚这一部分。

我正在尝试创建一个图表,显示教堂服务在一个校园的综合参与情况。我在这里缺少什么?

所以看来这行:

    stats_by_day = Stat.total_grouped_by_day("january 1, 2013".to_date)    

正在返回nil。

我尝试在控制台中输入此命令:

Stat.select("date(date), sum(attendance) as total_attendance")

它也会返回nil

Stat.first

返回

  Stat Load (0.4ms)  SELECT "stats".* FROM "stats" ORDER BY "stats"."id" ASC LIMIT 1
  => #<Stat id: 1, attendance: 41, salvations: 0, visitors: 7, offering: #<BigDecimal:7fb85b20b618,'0.2187E4',9(36)>, created_at: "2013-07-17 05:33:28", updated_at: "2013-07-18 19:29:47", campus_id: 1, date: "2013-07-14", time: "2000-01-01 19:00:00"> 

所以看起来问题就在于我如何调用select方法。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

可能是

stats_by_day[date].first.try(:total_attendance)

(括号而不是括号)

(如果你指定哪一行你会收到错误会更容易)