私はRailstarのエピソード223を出発点として、私のRails 3/Ruby 1.8.7プロジェクトにHighchartsを取り入れています。配列から要素を拒否する方法は?
私は過去4週間にわたってユーザーの体重をグラフ化しようとしています。ユーザーが自分の体重を入力しなくてもよい日があり、その日付をスキップするようにしたい場合もあります。
私はこのStackOverflowの質問に対する答えは使用してみました:エントリなし日付に割り当てられている
Highcharts - Rails array includes empty date entries
を、私はその重み値にOPで述べた同じ悩みを抱えています。要するに、重みのない日付は、配列に割り当てられており、次の重み値が見つかる。
ここに私のチャートのシリーズのオプションからコードです:
series: [{
name: "Daily Weight",
pointInterval: <%= 1.day * 1000 %>,
pointStart: <%= 4.weeks.ago.to_i * 1000 %>,
data: <%= (4.weeks.ago.to_date..Date.today).map { |date| Weight.weight_on(date, current_user.id).to_f}.reject(&:zero?).inspect %>
}]
そしてここでは、体重モデルからweight_on機能です:
def self.weight_on(date, user_id)
weight = Weight.find_by_entry_date_and_user_id(date, user_id)
unless weight.nil?
return weight.weight_entry
end
end
何が起こっていることは、日付/体重配列がされているときであるように見えます作成された日付は、加重値が返されるまで保持されます。次の日付に反復する前に、日付と重量(配列内の日付に対応しない)が配列に追加されます。
どのようにして日付を拒否することもできますか?その日付で重み値が見つからない場合は、その日付をスキップして配列に追加されないようにし、次の日付に移動するにはどうすればよいですか?
ありがとうございました!
答えは正確ではありませんが、あなたのアプリで日付を繰り返し、毎日データベースを照会する代わりに、カレンダーテーブル[1]を作成してあなたのデータをそこに参加させてください。 [1] http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html –