我的Event
模型的属性为start_time
,end_time
和title
。我希望以日历格式显示事件,从开始日期到结束日期可以看到事件。我使用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 %>
答案 0 :(得分:0)
我创建了一个散列,其中键作为日期,值作为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 %>