ruby-on-rails – 如何按年分组?

我有一个书籍模型,其日期类型列名为publish_date.根据我的观点,我正在翻阅书籍,我想按年份对书籍进行分组,这样我每年都会有一个标题,而那一年出版的书籍将列在年度标题下面.

因此,从2010年开始,将列出2010年出版的所有书籍,然后列出2009年出版的所有书籍的另一个标题“2009”,等等.

<% @all_books.each do |book| %>
   <%=link_to book.title + ",(PDF," + get_file_size(book.size) + ")" %>
<% end %>

通过book.publish_date.strftime(“%Y”),我能够得到年份,但我不知道如何按年份对条目进行分组.任何有关这方面的帮助将不胜感激.

解决方法

为方便起见,您可以使用group_by,但依靠DB进行排序和每个循环可以更好地满足您的需求.这避免了客户端排序和散列操作的成本.

在控制器的某个地方

@all_books = Book.all(:order => "publish_date DESC")

在你看来

<%year = nil
  @all_books.each do |book| 
    if year.nil? or year > book.publish_date.year 
      year = book.publish_date.year 
%>
      <h1> <%=year%><h1>
  <%end % >
  <%=link_to book.title + "," + get_file_size(book.size) + ")" %>
<%end %>

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...