【发布时间】:2015-07-15 17:26:44
【问题描述】:
我正在 Rails 中创建一个日程安排应用程序,但在尝试按日期组织房间时遇到了困难。当我说一个房间时,我基本上只是指日程安排中的一个街区。一个典型的活动可能是午餐(一个房间),然后是社交部分(另一个房间)。以下是我获得房间的方式:
@rooms = Room.where(event_id: @current_event.id).order(:start_time)
这样会按照开始时间的顺序返回属于某个事件的房间。在我的视图中,我循环显示并显示活动的房间,但我想在视图中按日期对它们进行分组,以防有一个持续多天的活动。
:start_time 也是 Ruby 中的日期时间类型。用人类的话说,我要做的是查看日期部分,如果房间日期与当前组不同,我将打印新日期并继续对当天的房间进行分组。如果我不清楚,这是一个简单的例子:
Event: Staff Retreat
July 14th, 2015
-----------------------
12:30 PM
Team building Lunch Begins
------------------------
6:30 PM
Team building Dinner Begins
------------------------
July 15th, 2015
------------------------
9:30 AM
Team building Breakfast Begins
那么在@rooms 变量(即日期时间)中对房间进行分组,那么显示上述表格的最佳方式是什么?我认为在我的循环中我应该检查日期是否与前一个房间相同,如果不打印日期
- @rooms.each do |room|
room.start_time.strftime("%B %d, %Y")
room.start_time.strftime("%I:%M%p")
room.name
我在后勤方面遇到了麻烦,因为使用模型-视图-控制器概念,我觉得视图中的排序可能会让视图做一些它不应该做的事情。我也在努力解决如何在视图中做到这一点。我认为在控制器中设置一个变量来保存我循环时的临时日期会起作用,但看起来这会开始变得非常混乱。将@rooms 变量中的各种日期分组的最佳方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby date datetime ruby-on-rails-4