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 %>

在视图中返回 this

["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">]] 

所以目前我有一个哈希值,其中月份/年份是关键,然后我的所有帖子都在一个数组中,对吗?

我只想显示月/年,然后单击该月以查看该月的所有帖子

任何帮助表示赞赏

编辑

好吧,愚蠢的我,忘记了键/值配对的基础知识,我只有要显示的日期

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

现在我只需要能够点击链接查看该月的所有帖子

4

1 回答 1

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
于 2013-08-02T07:19:05.410 回答