0

我在用

time_ago_in_words(post.created_at)

列出我的博客条目时。

而不是每个列表都在该帖子标题中列出 time_ago_in_words,我希望在一个标题下有不同帖子的组,例如,我可能在“30 分钟前”下有一个帖子,在“一个月前”下有 8 个帖子

任何人都可以推荐最好的方法吗?

4

1 回答 1

2

您是否意识到这time_ago_in_words是一种用 Ruby 语言编写的方法,因此您不能在您的 sql 查询中使用它来执行 DB 的分组和计数计算?

如果您有很多帖子,则必须制作一些 sql-query 来对帖子进行分组。

但是,如果您说您的帖子数量并不多,那么您可以使用简单的方法:

# in a controller
@posts_map = Post.order('created_at DESC').all.group_by{|post| time_ago_in_words post.created_at }

# in a view
- @posts_map.each do |time, posts|
  %h2 Created #{time} ago (#{posts.length}):
  - posts.each do |post|
    %h3= link_to post.title, post
于 2012-04-22T16:06:52.530 回答