我正在使用
time_ago_in_words(post.created_at)
列出我的博客条目时。
我想在帖子标题中列出time_ago_in_words而不是每个列表,我希望在一个标题下有不同帖子的组,例如我可能在“30分钟前”下有一个帖子,在“一个月前”下有8个帖子
有人可以推荐最好的方法吗?
答案 0 :(得分:2)
您是否意识到time_ago_in_words
是一种用Ruby语言编写的方法,因此您不能在sql-queries中使用它来执行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