我有一个书籍模型,其日期类型列名为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 %>