1

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でチャート作成に取り組んでいますが、この部分がわかりません。

1 つのキャンパスでの教会礼拝の合計参加者数を示すグラフを作成しようとしています。ここで何が欠けていますか?

したがって、次の行のようです:

    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 メソッドの呼び出し方法に問題があるようです。何か案は?

4

1 に答える 1

0

もしかしてですか

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

(括弧の代わりに括弧)

(エラーが発生している行を指定すると簡単になります)

于 2013-07-19T03:06:09.857 に答える