0
列舉我的博客文章時,我使用下單time_ago_in_words分組博客文章
time_ago_in_words(post.created_at)
。
而不是每個列表中的time_ago_in_words在該帖子標題中列出,我想在一個標題下的不同職位的組,例如我可能有一個帖子「30分鐘前」和8個帖子「一個月前」 「
任何人都可以推薦最好的方法嗎?
列舉我的博客文章時,我使用下單time_ago_in_words分組博客文章
time_ago_in_words(post.created_at)
。
而不是每個列表中的time_ago_in_words在該帖子標題中列出,我想在一個標題下的不同職位的組,例如我可能有一個帖子「30分鐘前」和8個帖子「一個月前」 「
任何人都可以推薦最好的方法嗎?
您是否意識到time_ago_in_words
是一種用Ruby語言編寫的方法,因此您不能在您的sql-queries中使用它來執行數據庫的分組和計算?
如果你有很多帖子,你必須製作一些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
感謝您的答覆JDOE,但我想你已經錯過,明白我的意思。我有一個博客首頁,列出我所有的帖子,以及他們使用time_ago_in_words發佈的時間。我想避免這種情況,我可能會連續發佈3個帖子,標題都是「1個月前發佈」。我想要的是在「1個月前」有一個標題,下面有三個帖子。 – pingu 2012-04-22 19:38:28
這就是我的例子! '創建#{time}前(#{posts.length}):'顯示標題和'posts.each do | post |'循環通過這個時間組。然後對另一個時間組也是如此。 – jdoe 2012-04-22 19:43:59
我們可以考慮一個SQL選項還是沒有真正的方法?我現在正在研究這個確切的事情。 – 2017-07-31 12:26:55