Rails - 最佳方式/如何创建基于日期的导航

时间:2011-09-12 19:53:35

标签: ruby-on-rails ruby date

我是rails的新手,正致力于扩展我的基本博客应用的功能。我想要做的是创建基于日期的导航链接。例如,我想要一个包含月份名称的链接列表(作为链接),当您点击月份时,它会显示该月份发布的所有文章。

我正在努力学习如何最好地完成这项工作。

我应该为像ArticleArchive这样的东西创建一个新的模型/视图/控制器吗?或者根据我的需求,解决方案更简单?

我搜索了社区中的其他帖子,似乎没有人回答这个问题。任何有关如何构建和可能实现的帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:3)

这是一个接近这个的例子,虽然我想在白天对它进行排序。这适用于您的控制器操作:

def index
  @article_days = Article.all.group_by{ |r| r.published_at }
end

要将此修改为几个月,您需要在上面的示例中执行类似r.published_at.beginning_of_month的操作,并且基本上group_by月份的名称。

在视图模板中:

<% @article_days.sort.each do |pub, articles| %>
  <h3><%= pub.strftime('%e %A, %B %Y') %></h3>
  <% for article in articles %>
    <%= article.title %><br/>
    <%= article.summary %>
  <% end %>
<% end %>  

还有一个screencast on this

<强>更新

好的 - 所以你只想要出现月份的名字。保留我们在索引操作中设置的实例变量以及其他代码(您可能已设置@articles = Article.all)。然后你想要列出的链接:

<% @article_months.sort.each do |pub, articles| %>
  <h3><%= pub.strftime('%B') %></h3>
  <% for article in articles %>
    <%= link_to "#{article.title}", article_path(article) %>
  <% end %>
<% end %>