当前位置 : 主页 > 编程语言 > ruby >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有一个书籍模型,其日期类型列名为publish_date.根据我的观点,我正在翻阅书籍,我想按年份对书籍进行分组,这样我每年都会有一个标题,而那一年出版的书籍将列在年度标题下面. 因此,从
我有一个书籍模型,其日期类型列名为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 + ", (PDF, " + get_file_size(book.size) + ")" %>
<%end %>
网友评论