1

几天来我一直在与代码作斗争,我真的无法从中得到任何好处!

我正在制作一个博客存档,我正在寻找一种从 created_at 获取所有年份和月份的方法。假设我在 2011 年、2012 年和 2013 年收到了很多帖子。

下面的“代码”只是我正在尝试构建的结构的一个示例(这只是为了让您了解我想要它的样子)

years.each do |y|
   puts y.created_at.year

      y.created_at.month.each do |m|
      puts m.created_at.month

          (And ye, posts for each months loops here)

      end

end

我追求的输出是这样的:

2013
  May
    Name of post
    Name of post
  April
    Name of post
    Name of post
  Mars
    Name of post
    Name of post

2012
  December
    Name of post
    Name of post
  November
    Name of post
    Name of post
  October
    Name of post
    Name of post

我希望我说得足够清楚!我敢肯定这比我现在想的要简单得多!真的很感激这里的一些帮助!

4

1 回答 1

1
month, year = nil, nil
Post.order("created_at desc") do |post|
  if year != post.created_at.year
    year = post.created_at.year
    puts year
  end

  if month != post.created_at.month
    month = post.created_at.month
    puts "\t#{post.created_at.strftime("%B")}"
  end

  puts "\t\t#{post.name}"
end
于 2013-05-06T21:45:31.593 回答