我在用
time_ago_in_words(post.created_at)
列出我的博客条目时。
而不是每个列表都在该帖子标题中列出 time_ago_in_words,我希望在一个标题下有不同帖子的组,例如,我可能在“30 分钟前”下有一个帖子,在“一个月前”下有 8 个帖子
任何人都可以推荐最好的方法吗?
我在用
time_ago_in_words(post.created_at)
列出我的博客条目时。
而不是每个列表都在该帖子标题中列出 time_ago_in_words,我希望在一个标题下有不同帖子的组,例如,我可能在“30 分钟前”下有一个帖子,在“一个月前”下有 8 个帖子
任何人都可以推荐最好的方法吗?
您是否意识到这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