使用Enumerable,我试图按日期在有组织的事件日历中显示日期。不是标准的7网格日历。
试着得到:
2011年12月1日活动1活动2活动3
2011年12月2日活动4活动5
2011年12月3日活动6
...
目前,Enumerable混淆了地狱。谢谢你的指导 -
编辑2011年12月22日
当前数据:
控制器串 -
@events = Event.where('start >= ?', Date.today).paginate(:per_page => 15, :page => params[:page])
查看电话 -
<% @events.each do |event| %>
<table stuff here>
<% end %>
方法 - 截至目前尚未在方法上指定任何可枚举的内容---
我的表包括以下字段; :title,:venue,:address(地理编码),:about(text),: start(datetime function)
更新问题更新:所以你在@events
中有一堆事件对象,所以你可以使用group_by
:
@events_by_date = @events.group_by { |e| e.start.to_date }
这将在@events_by_date
中为您提供哈希,其中日期为键,Event对象的数组为值。
然后你想要一个Dates数组的数组来匹配你的月份并从该数组驱动表:
<table>
<% @month.each do |week| %>
<tr>
<% week.each do |day| %>
<td>
<% if day %>
<%= day.day %>
<% @events_by_date[day].to_a.each do |e| %>
<%= e.about %>
<% end %>
<% end %>
</td>
<% end %>
</tr>
<% end %>
</table>
当然会涉及一些格式,但结构会类似。