我有一个包含开始和结束日期的事件表。
现在我想获取特定日期的事件。即如果我提供2014年5月1日,2004年5月2日,我需要在当天发生的所有事件(根据开始和结束日期)。我需要根据开始日期对事件进行分组,并将它们显示为列表。
现在的问题是如果事件发生在两天,比如5月1日和5月2日,我需要在列表中显示两次事件,如下所示:
1 May 2014
EventName
2 May 2014
EventName
我不知道怎么做...有谁可以帮我提出一个有效的方法来做到这一点?
答案 0 :(得分:2)
为了让事件出现两次,我会将单独创建的集合添加到一起。
events = []
(start_date..end_date).each do |date|
events += Event.where("start_date >= ? and end_date <= ?", date, date)
end
events
答案 1 :(得分:1)
events = Event.where("start_date >= ? AND end_date <= ?", start_date, end_date)
display_events = Hash.new
(start_date..end_date).each do |date|
display_events[date] << events.select { |event| event.start_date <= date and event.end_date >= date }
end
在这里,您最终会得到一个包含按日期分组的事件的哈希值。 (我在手机上,所以我无法测试它)
答案 2 :(得分:0)
尝试在每天获取并显示所有事件.i.e不基于事件迭代数据,而是根据事件日期进行迭代。
s_date = Date.parse('2010-09-29')
e_date = Date.parse('2010-09-30')
sd.upto(ed) do |date|
@events = Event.event_on_date(date)
end