1日あたりの平均コール数のレポートを生成しようとしています。次の例では正しいリストが生成されますが、ユーザが特定の日に電話をかけていない場合は表示されません。上記のリンクを通って行くVery much like this problem1日あたりの平均ルビーレンダー
、私はこのコードを持っている:オープンフラッシュチャートの値に最初に、私だけで立ち往生call_avesで
from_date = Time.now.at_beginning_of_month.to_s(:db)
to_date = Time.now.tomorrow.to_s(:db)
ave_calls = @current_user.calls.average(:num_of_calls, group => "DATE(calls.start_time_stamp)",
:conditions => ["calls.created_at BETWEEN ? AND ?",from_date, to_date])
call_aves = (Time.now.at_beginning_of_month..Time.now.tomorrow).map{|dt| [dt, ave_calls[dt.strftime "%Y-%m-%d"] || 0]}
を、そしてそれを破った、それが行ったようにkind'veに見えました無限ループに変換します。だから私はデバッガに何が起こっていたのか調べました。
irb(#<ReportsController:0x47b7524>):008:0> call_aves[0]
=> [Sat Aug 01 00:00:00 -0400 2009, 0]
私が配列に上がると、それは数日ではなく数秒だけ増分することに気付きます。例:
irb(#<ReportsController:0x47b7524>):009:0> call_aves[30]
=> [Sat Aug 01 00:00:30 -0400 2009, 0]
これは、1日ではなく2日でどのように上昇するのですか?
これは既に試されていますが、例外がスローされます。 "2009-08-01 00:00:00"のための未定義のメソッド 'strftime ':文字列。 strftimeとto_sはお互いが好きではありません。 – Ryan
strftimeを使ってTimeオブジェクトからタイムアウトをフィルタリングし、日付だけを残しているようです。 Dateオブジェクトの使用には時間が含まれていないので、strftimeは必要ありません。 to_sと日付形式を使用するだけです。日付形式の詳細:http://onrails.org/articles/2008/08/20/what-are-all-the-rails-date-formats – Jarrod