局部模板我有一個使用日曆應用程序,我想提供登錄日曆摘要。摘要應被格式化,因此它顯示了今天,明天的事件,而本週,就像這樣:Rails的:分組基於屬性
活動爲:
今天
- 事件1
明天
- 事件2
- 事件3
- 事件4
本週
- 事件5
- 事件6
- 事件7
- 事件8
如何渲染偏色,以便根據日期以正確的方式將它們組合在一起?
局部模板我有一個使用日曆應用程序,我想提供登錄日曆摘要。摘要應被格式化,因此它顯示了今天,明天的事件,而本週,就像這樣:Rails的:分組基於屬性
活動爲:
今天
- 事件1
明天
- 事件2
- 事件3
- 事件4
本週
- 事件5
- 事件6
- 事件7
- 事件8
如何渲染偏色,以便根據日期以正確的方式將它們組合在一起?
第一個可以添加一個模型方法for_dates(日期,結束日期),其中將包括: where([:date_column >= ? and :date_column <= ?, start_date, end_date])
然後使用:
Model.for_dates(Date.today, Date.today)
Model.for_dates(Date.today+1, Date.today+1)
默認 '周' 是星期天到星期一。如果您希望有不同的日子,請添加抵消
週一至週五是
Model.for_dates(Date.today.beginning_of_week+1, Date.today.end_of_week+1)
假設你的模式被稱爲Event
,它有一個date
屬性,你的這些集合稱爲@events
,這裏有一個想法:在你看來將這個.. 。
<ul>
<%= render @events, locals: { events: @events } %>
</ul>
...那麼你將有一個所謂的部分是_event.html.erb
看起來像這樣:
<% last_event = event_counter == 0 ? nil : events[event_counter - 1]
next_event = events[event_counter + 1]
%>
<% if last_event && last_event.date != event.date
# add a new date header and start a new nested list of events
%>
<li><h3><%= event.date %></h3>
<ul>
<% end %>
<li><%= link_to event %></li>
<% if next_event && next_event.date != event.date
# end the nested list and make way for the next date header and set of events
%>
</ul>
</li>
<% end %>
什麼happing是在render
調用我們整個@events
集合中傳遞作爲本地被叫events
。然後在部分內部,我們使用自動生成的event_counter
方法查找集合中的前一個(events[event_counter - 1]
)和下一個(events[event_counter + 1]
)事件。那麼如果當前event
的日期與last_event
的日期不同(意思是它是該日期的第一個日期),我們開始一個新的日期標題,如果日期event
與日期next_event
(日期即它是該日期的最後一個),我們結束該集合。
這有點難看,還有更多優雅的方法可以做到這一點,但它可以完成工作。