2016-05-13 11 views
1

私はEventのモデルを持っています。属性がstart_time,end_timeおよびtitleのモデルです。イベントを開始日から終了日まで見ることができるカレンダー形式でイベントを表示したい。私はsimple_calendar宝石をカレンダーを表示するために使用しています。宝石のgithubページはhereです。私が使用しているコードは、現在、開始日にイベントを表示しています。 simple_calendarを使用してビューをレンダリングしたり、他の人がカレンダーのイベントをループしてロジックをゼロから作成して開始日から終了日までのイベントを表示するのに役立てることはできますか?開始日から終了日までカレンダーにイベントを表示

カレンダーのページ:

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

答えて

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 %> 
関連する問題