首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按天分组Created_At

按天分组Created_At
EN

Stack Overflow用户
提问于 2012-12-06 16:39:36
回答 4查看 5.6K关注 0票数 8

我正试图得到一个循环来发布按每天由created_at分组的视频。

例如:

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

2012年12月4日-视频6

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

videos_controller:

代码语言:javascript
复制
  def index
    @title = 'Hip Hop Videos, Breaking News, Videos, And Funny Shxt | HOTDROPHIPHOP'
    @description = ''
    @videos = Video.all
    @days = Video.where(:created_at == Time.today )
  end

视图文件:

代码语言:javascript
复制
<% @days.each do |day| %>

  <div class="video-date">December 4, 2012</div>

  <% @videos.each do |video| %>
  <% end %>

<% end %>

我也需要让div显示那天的日期。

我四处搜索,找不到解决方案,尝试了group_by (这似乎是最干净的),但无法让它起作用。我的铁轨有点生锈,因为我已经好几个月没碰它了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-06 17:24:28

你可以这样做:

代码语言:javascript
复制
@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}, etc], next_date_value: [{video3}, {video4}, etc], etc...}形式的散列。

由于您在.to_date字段上调用created_at,它将删除所有的时间信息,并在一天内对所有内容进行有效分组。

您可以循环遍历它,就像:

代码语言:javascript
复制
<% @video_days.each do |day, videos| %>
  <%= day.strftime("some format") %>
  <% videos.each do |video| %>
    <%= #output videos how you see fit %>
  <% end %>
<% end %>
票数 18
EN

Stack Overflow用户

发布于 2016-07-25 21:48:57

最好的方法是使用gem

例如User.group_by_day(:created_at).count

允许您按日、周、时点餐

票数 3
EN

Stack Overflow用户

发布于 2012-12-06 17:07:49

首先,从今天开始只调用视频,然后运行所有视频是没有意义的。

我会这样试一试:

控制器

代码语言:javascript
复制
@videos = Video.all(:conditions => ["created_at >= ?", Date.today.at_beginning_of_month])

视图

代码语言:javascript
复制
<% Date.today.at_beginning_of_month.upto(Date.today).each do |date| %>
  <%= date %>: <%= @videos.select{|u| u.created_at == date }.title %>
<% end %>

它应该给你一个视频列表与“日期:视频标题”的实际月份。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13748284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档