从开始日期到结束日期的日历中显示事件

问题描述:

我有一个Event带属性的模型start_time,end_timetitle。我想以日历格式显示事件,其中可以从开始日期到结束日期查看事件。我正在使用simple_calendar gem来显示日历。 gem的github页面是here。以下是我正在使用的代码,它目前在其开始日期显示事件。我可以使用simple_calendar以我想要的方式呈现视图,还是有人可以帮助我如何循环日历中的事件,以便我可以从头开始编写逻辑并显示从开始日期到结束日期的事件?从开始日期到结束日期的日历中显示事件

日历页:

<%= month_calendar events: @events do |date, events| %> 
    <%= date %> 
    <% events.each do |event| %> 
    <div> 
     <%= event.title %> 
    </div> 
    <% end %> 
<% end %> 

我创建了一个哈希连键日期和值的Event的阵列。对于事件存在的每个日期密钥,多次存在的事件存在于散列中多次。现在我只是检查日期是否有任何事件在渲染时打印,如果是真的。

控制器

def calendar 
    @date_events = Hash.new { |h, k| h[k] = [] } 
    Events.all.each do |event| 
    (event.starts_at.to_date..event.ends_at.to_date).each do |dt| 
     @date_events[dt].push(event) 
    end 
    end 
end 

calendar.html.erb

<%= month_calendar do |date| %> 
    <%= date %> 
    <% if @date_events[date] %> 
    <% @date_events[date].each do |event| %> 
     <div> 
     <%= event.title %> 
     </div> 
    <% end %> 
    <% end %> 
<% end %>