微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐