我將Highcharts合併到我的Rails 3/Ruby 1.8.7項目中,使用Railscast第223集作爲起點。如何拒絕數組中的元素?
我想繪製一個用戶在前四周的體重。有些時候用戶可能不會輸入他們的體重,我希望圖表跳過這些日期。
我嘗試使用回答這個問題#1:
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 – 2011-12-27 13:43:35