1

我正在构建一个列出课程(“部分”)并显示这些课程的学期和考试日期的学校日历。为日历提供模型中定义的哈希Section.rb

  def get_calendar

    calendar = {}
    calendar[:semesters] = Semester.where(section_id: self.id)
    calendar[:exams] = Exam.where(section_id: self.id)

    { :calendar => calendar }

  end

和对象有,Semester和。Examnamestart_dateend_date

循环浏览日历的每一天时,我如何检查循环当天是否有学期或 start_date 考试 end_date

如果有一个学期或考试与start_date日历end_date日期匹配,我会显示名称。

日历日期和start_dateandend_date字段都使用Date类(链接)。

我真诚地感谢您的帮助。如果需要,我可以澄清这个问题:)

谢谢!

4

2 回答 2

1

也许您应该重新考虑您的哈希,并以这种方式使用它:

def get_calendar
  semesters = self.semesters
  exams = self.exams

  events = { }

  (semesters + exams).each do |event|
    start_date = event.start_date.to_s
    events[start_date] ||= []
    events[start_date] << event

    end_date = event.end_date.to_s
    events[end_date] ||= []
    events[end_date] << event
  end

  events
end

并测试构造日历的循环中是否存在事件:

dates_of_calendar.each do |date|
  if @events[date.to_s].present?
    # well, there is an event happening for this date! treat it as your wishes!
  end
  # etc...
end
于 2013-08-12T20:41:14.600 回答
1

enumberable检测方法会起作用吗?http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-detect

因此,当您遍历您的状况时,可能是...

semesters.detect{|s| s.begin_date > cal_begin_date ... //more conditions here} && 
exams.detect{|e| e.begin_date > cal_begin_date ... //more conditions here}
于 2013-08-12T20:52:31.877 回答