2013-08-02 43 views
0

不知道从哪里开始,所以在这里..我正在建立一个小博客,其中每个帖子的日期显示,加班将有许多博客帖子每月,为此我想在它出版的月份之前团聚在一起。按月份/年显示帖子红宝石

我想在视图

Archives 

January 2013 
February 2013 
March 2013 
etc 

这样的显示,当我在某月的想法是,将带我去所有的职位,如该月内公布单击。

到目前为止,我可以组全部由月和年

@posts_by_month = Post.all.group_by { |post| post.created_at.strftime("%B %Y") } 

在我看来,在帖子中,我再呈现像这样

<% @posts_by_month.each do |m| %> 
    <%= m %> 
<% end %> 

其中在视图返回此

["July 2013", [#<Post id: 1, title: "Ruby News", comments: "dsfdsfdsfdsfdsfds", category_id: 1, user_id: 1, created_at: "2013-07-26 07:10:25", updated_at: "2013-07-26 07:19:27", photo_file_name: "pf-7.jpg", photo_content_type: "image/jpeg", photo_file_size: 162495, photo_updated_at: "2013-07-26 07:19:26">]] 

所以目前我有一个散列,其中月份/年份是关键,然后是我在数组中的所有帖子,是否正确?

所有我想要显示的是月/年,然后单击月份将要采取的所有帖子当月

任何帮助表示赞赏

编辑

OK我傻了,忘我的键/值对基础知识,我有刚日期显示

<% @posts_by_month.each do |m,p| %> 
    <%= link_to m %> 
<% end %> 

现在我只需要能够点击链接查看的是m的所有帖子onth

回答

1

你可以做

= link_to m, posts_path(:month => m) 

现在posts#index,取基于params[:month]

if params[:month] 
    date = Date.parse("1 #{params[:month]}") # to get the first day of the month 
    @posts = Post.where(:created_at => date..date.end_of_month) # get posts for the month 
else 
    @posts = Post.all 
end 
+0

感谢您的回答职位,帮助一个lot..i有另外一个问题,虽然,这样的网址现在是帖子?月= 7月+ 2013年例如,我如何确保只是该月的帖子在视图中?.....哦,挂上想我有它 – Richlewis

+0

啊,没有我的方式没有工作@archives = Post.find(params [:month]) – Richlewis

+0

已更新我的回答 – Santhosh