所以我有一系列@events
,目前在控制器中定义如下:
@events = current_user.events.order(created_at: :desc)
但是,在我看来,我希望能够以不同的类别显示事件,但所有事件都按照创建日期排序。例如,像这样:
今天
昨天
7月27日
7月26日
当然,我希望动态显示日期的名称(即今天应该始终显示Today
,所以我想使用Rails天助手很好。
但我也希望它能够在过去2或3天后切换到常规日期。
最优雅的方法是什么?理想情况下,如果我可以简单地修改@events
实例变量以适应这种情况,那么它就会很棒,然后在视图中创建一些帮助器。
但是看起来会是什么样的,@events
修改和帮助。
答案 0 :(得分:2)
您可以从数据库中获取分组记录:
@grouped_events = @events.group_by { |e| e.created_at.to_date }
这将为您提供一个哈希,其中日期为键,事件数组为值。
答案 1 :(得分:0)
您需要遍历事件并检查事件的日期是否与上一个事件不同。如果不同则显示今天/昨天/日期的标题然后显示事件,否则只显示事件并重置日期检查。
@events = current_user.events.order(created_at: :desc)
cur_date = nil
@events.each do |event|
if cur_date != event.created_at
#Logic to display Today/Yesterday/Date
end
cur_date = event.created_at
#Logic here to display event
end