I have a books model with a date type column named publish_date. On my views I’m iterating through the books and I want to group the books by year such that I have a heading for every year and books that were published on that year to be listed below the year heading.
So by starting with “2010” all books published on 2010 would be listed, then another heading “2009” with all books published in 2009 listed below it and so forth.
<% @all_books.each do |book| %>
<%=link_to book.title + ", (PDF, " + get_file_size(book.size) + ")" %>
<% end %>
By doing a book.publish_date.strftime(“%Y”) I am able to get the year but I do not know how to group the entries by year. Any help on this would be appreciated.
You can use
group_byfor convenience, but your need can be better served by relying on DB for sorting and aeachloop. This avoids the cost of client side sorting and hash manipulations for grouping.Somewhere in your controller
In your view