所以我每周都会看到一个事件日历,我正试图找出最好的方法来获取每一天发生的事件。
目前,我对events_controller的索引操作使用Event.rb上的类方法来获取该周期间发生的所有事件。但是,我想创建一个按天显示事件的表:
Sunday 04/29/2012
Class 10:00 am
Monday 04/30/2012
Class 10:00 am
Tuesday 05/01/2012
Class 10:00 am
Wednesday 05/02/2012
Class 10:00 am
Thursday 05/03/2012
Class 10:00 am
Friday 05/04/2012
Class 10:00 am
Saturday 05/05/2012
Class 10:00 am
我不太确定在本周发生的各种事件中,每天发生事件的最佳方法是什么。
#event.rb
class Event < ActiveRecord::Base
def self.for_week_starting(day=Date.today.beginning_of_week(:sunday))
sunday = day.beginning_of_week(:sunday)
saturday = day.end_of_week(:sunday)
where(:date => sunday..satuday)
end
end
编辑:
可见的group_by似乎是要走的路。我可以查看每周范围并重复一遍,然后使用@workouts.group_by(&:date)
来获得每个训练的一组,我只是不太清楚我是如何让小组离开小组的那个匹配我的日期我很感兴趣。
答案 0 :(得分:0)
最终没有最终使用示波器,但这是完整的解决方案。在控制台周围花了很多时间来搞清楚内置方法返回的内容,但在那之后将逻辑放在一起并不太难。
#event.rb
class Event < ActiveRecord::Base
def self.for_week_starting(day=Date.today.beginning_of_week(:sunday))
sunday = day.beginning_of_week(:sunday)
saturday = day.end_of_week(:sunday)
where(:date => sunday..saturday)
end
end
#events_controller.rb
def index
#use today's date if none comes through params
start_date = params[:start_date] ? params[:start_date].to_date : Date.today
@week = (start_date.beginning_of_week(:sunday)..start_date.end_of_week(:sunday))
@events = Event.for_week_starting(@week.first).group_by(&:date)
end
#index.html.erb
<% @week.each do |day| %>
<%= day.strftime('%A, %B %e, %Y')%></th>
<% unless @events[day].nil? then %>
<% @events[day].each do |event| %>
<%= link_to event.name, event_path(event) %>
<% end %>
<% end %>
<% end %>