0

私は使っている

time_ago_in_words(post.created_at)

私のブログエントリをリストするとき。

投稿のタイトルに time_ago_in_words がリストされているすべてのリストの代わりに、1 つの見出しの下に異なる投稿のグループが必要です。たとえば、「30 分前」の下に 1 つの投稿、「1 か月前」の下に 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 に答える