Ruby on rails 每周活动日历的范围
所以我有一个活动日历的每周视图,我试图找出最好的方法来获取每一天发生的事件 目前,events_控制器上的索引操作使用Event.rb上的类方法来获取该周发生的所有事件。但是,我想创建一个表,按天显示事件,如下所示:Ruby on rails 每周活动日历的范围,ruby-on-rails,activerecord,scope,Ruby On Rails,Activerecord,Scope,所以我有一个活动日历的每周视图,我试图找出最好的方法来获取每一天发生的事件 目前,events_控制器上的索引操作使用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
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
#event.rb
类事件sunday..satuday)
结束
结束
编辑:
可枚举的group_by似乎是一条出路。我可以设定一个每周的训练范围并反复进行,然后使用
@workouts.group_by(&:date)
来获得每项训练的一组,我只是不太清楚如何在匹配我感兴趣的日期之前将组从组中分离出来。比如说,最后没有使用范围,但这是完整的解决方案。在控制台上花了很多时间才弄清楚内置方法返回了什么,但是在这之后,把逻辑放在一起并不难
#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 %>
#event.rb
类事件sunday..周六)
结束
结束
#事件\u控制器.rb
def索引
#如果参数中没有日期,则使用今天的日期
开始日期=参数[:开始日期]?参数[:开始日期]。截止日期:日期。今天
@周=(开始日期。开始一周(:星期日)…开始日期。结束一周(:星期日))
@事件=开始(@week.first)的事件。分组人(&:date)
结束
#index.html.erb