我是rails的新手,正致力于扩展我的基本博客应用的功能。我想要做的是创建基于日期的导航链接。例如,我想要一个包含月份名称的链接列表(作为链接),当您点击月份时,它会显示该月份发布的所有文章。
我正在努力学习如何最好地完成这项工作。
我应该为像ArticleArchive这样的东西创建一个新的模型/视图/控制器吗?或者根据我的需求,解决方案更简单?
我搜索了社区中的其他帖子,似乎没有人回答这个问题。任何有关如何构建和可能实现的帮助表示赞赏。谢谢!
答案 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 %>