事件不会显示在日历中

我已经按照Railscast#213创建了Calendar,它显示了current_user.events 。 但我的日历不会显示它们。

我想,问题是因为我使用的是date而不是date因为Ryan在他的演员阵容中使用过。 但是我无法理解如何仅从我的datetime时间解析datetime

我试图将@date变量更改为

 @date = params[:datetime] ? DateTime.parse(params[:datetime]).to_date : Date.today 

代替

 @date = params[:date] ? Date.parse(params[:date]) : Date.today 

用于演员,但它没有帮助。

所以,我的events_controller#index是:

 def index @events = current_user.events.all @events_by_date = @events.group_by(&:start_date) @event = Event.new(params[:event]) @date = params[:datetime] ? DateTime.parse(params[:datetime]).to_date : Date.today end 

日历助手和events#index我没有改变就离开了。

calendar_helper.rb

 module CalendarHelper def calendar(date = Date.today, &block) Calendar.new(self, date, block).table end class Calendar < Struct.new(:view, :date, :callback) HEADER = %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday] START_DAY = :monday delegate :content_tag, to: :view def table content_tag :table, class: 'calendar' do header + week_rows end end def header content_tag :tr do HEADER.map { |day| content_tag :th, day }.join.html_safe end end def week_rows weeks.map do |week| content_tag :tr do week.map { |day| day_cell(day) }.join.html_safe end end.join.html_safe end def day_cell(day) content_tag :td, view.capture(day, &callback), class: day_classes(day) end def day_classes(day) classes = [] classes << 'today' if day == Date.today classes << 'notmonth' if day.month != date.month classes.empty? ? nil : classes.join(' ') end def weeks first = date.beginning_of_month.beginning_of_week(START_DAY) last = date.end_of_month.end_of_week(START_DAY) (first..last).to_a.in_groups_of(7) end end end 

index.html.erb

 

<%= link_to " ", date: @date.next_month %>

谢谢你的帮助!

我在这里找到了答案

解决方案是仅按date而不是datetime date对事件进行分组。

@events_by_date = @events.group_by { |i| i.start_date.to_date }

Joe Frambach有一个正确的想法。

Interesting Posts