1

私がcreated_at、title、idの投稿モデルを持っていると仮定します。アーカイブの表示に使用する年>月>投稿の配列を作成するにはどうすればよいですか。

これまでのところ私は持っています:

@posts = Post.all(:order => 'created_at DESC')
@post_months = @posts.group_by { |t| t.created_at.beginning_of_month }

これにより、{"June 2012" => {"post1"、"post2"}}のようなものが表示されます。

http://shouweick.blogspot.co.uk/2012/02/handling-background-jobs-in-rails-32.htmlこのブログには、必要な出力形式があります{year => {november => {post1、post2 }、12月=> {post3}}}

4

1 に答える 1

2

最初に年ごとにグループ化し、次にそれらのグループを月ごとにグループ化します。

Hash[
  x.group_by{|x| x.created_at.year}
   .map{|k,v| [k,v.group_by{|x| x.created_at.month}]}
]
于 2012-06-26T19:54:38.690 に答える