Ruby on rails 按天分组在

Ruby on rails 按天分组在,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正试图得到一个循环,以张贴视频分组的每一天创建的_在 例如: 2012年12月5日- 视频9 视频8 视频7 2012年12月4日- 视频6 视频5 2012年12月3日- 视频4 视频3 视频2 视频1 视频控制器: 查看文件: 我还需要让那个div显示当天的日期 我四处搜索,找不到解决方案,于是尝试了一组看似最干净的方法,但无法使其发挥作用。我有点生疏了,因为我已经好几个月没碰它了。首先,从今天起只调用视频,然后浏览所有视频是没有意义的 我会这样尝试: 控制器 看法 它应该为您提供一个视频

我正试图得到一个循环,以张贴视频分组的每一天创建的_在

例如:

2012年12月5日- 视频9 视频8 视频7

2012年12月4日- 视频6 视频5

2012年12月3日- 视频4 视频3 视频2 视频1

视频控制器:

查看文件:

我还需要让那个div显示当天的日期


我四处搜索,找不到解决方案,于是尝试了一组看似最干净的方法,但无法使其发挥作用。我有点生疏了,因为我已经好几个月没碰它了。

首先,从今天起只调用视频,然后浏览所有视频是没有意义的

我会这样尝试:

控制器 看法
它应该为您提供一个视频列表,其中包含日期:实际月份的视频标题。

假设您使用的是mysql,并且视频具有属性标题 我发布以下代码是为了帮助您掌握逻辑,当然它需要重新分解

控制器

看法

您可以这样做:

@videos = Video.where(Video.arel_table[:created_at].gteq(some_date_value))
@video_days = @videos.group_by {|video| video.created_at.to_date }
其中@video_days将是一个散列,形式为{some_date_value:[{video1}、{video2}等],next_date_value:[{video3}、{video4}等,}

由于您在created_at字段中调用.to_date,它将删除所有时间信息,有效地按天对所有内容进行分组

您可以像这样循环:

<% @video_days.each do |day, videos| %>
  <%= day.strftime("some format") %>
  <% videos.each do |video| %>
    <%= #output videos how you see fit %>
  <% end %>
<% end %>

最好的方法是使用宝石

e、 g用户。按天分组:在计数时创建


允许您按天、周、小时订购

看起来是最好的方式,谢谢!然而,在strftime上遇到了麻烦。给我错误:未定义的方法“strftime”。显示为未定义的方法。如何构建循环?我在rails控制台中本地执行此操作:@video_days.each{| date,video | date.class},它是打印日期。这应该行得通。嗯,如果你在这里查看group_的代码,它显示键应该是传递到块中的元素,在我们的例子中,video.created_at.to_date。不知怎的,你把统计员找回来了,但我不知道从这里怎么办。你的小组能按代码分组吗?
@videos = Video.all(:conditions => ["created_at >= ?", Date.today.at_beginning_of_month])
<% Date.today.at_beginning_of_month.upto(Date.today).each do |date| %>
  <%= date %>: <%= @videos.select{|u| u.created_at == date }.title %>
<% end %>
@videos = {}
videos =  Video.order("DATE(created_at) DESC, title ASC").select("DATE(created_at) as created_at, title, id" )

videos.collect{|x| @videos[x.created_at.to_s] = @videos[x.created_at.to_s] ? @videos[x.created_at.to_s] << x.title : [x.title]  }
<% @videos.each do |posted_date, videos| %>
  <div class="video-date"><%= Date.parse(posted_date.to_s).strftime("%b %d, %Y") %> </div> 
  <%= videos.join(", ") %>
 <% end %>
@videos = Video.where(Video.arel_table[:created_at].gteq(some_date_value))
@video_days = @videos.group_by {|video| video.created_at.to_date }
<% @video_days.each do |day, videos| %>
  <%= day.strftime("some format") %>
  <% videos.each do |video| %>
    <%= #output videos how you see fit %>
  <% end %>
<% end %>