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

时间:2016-05-13 14:06:00

标签: ruby-on-rails-4 calendar

我的Event模型的属性为start_timeend_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 %>

1 个答案:

答案 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 %>