2012-06-26 7 views
1

나는 created_at, title 및 id를 가진 포스트 모델을 가지고 있다고 가정합니다. 아카이브를 표시하는 데 사용할 년> 월> 개의 게시물이있는 배열을 어떻게 만들 수 있습니까?blogspot을 레일즈에서 아카이브처럼 만드는 방법 3.2

지금까지 내가 가지고 : 이것은 나에게 가까이 { "2012년 6월"=> { "post1", "post2"}} 같은 것을 제공

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

.

http://shouweick.blogspot.co.uk/2012/02/handling-background-jobs-in-rails-32.html 여기이 블로그는 내가 원하는 출력 형식 {년 => {11월 => {post1, post2}, 12 월 => {포스트 3}}}

답변

2

먼저 연도 별 그룹, 다음 그룹이 그룹이있다 월별 :

Hash[ 
    x.group_by{|x| x.created_at.year} 
    .map{|k,v| [k,v.group_by{|x| x.created_at.month}]} 
] 
+0

환호성이 넘칩니다. – user1283644

관련 문제