Rails: “Next post” and “Previous post” links in my show view, how to?

If each title is unique and you need alphabetical, try this in your Post model.

def previous_post
  self.class.first(:conditions => ["title < ?", title], :order => "title desc")
end

def next_post
  self.class.first(:conditions => ["title > ?", title], :order => "title asc")
end

You can then link to those in the view.

<%= link_to("Previous Post", @post.previous_post) if @post.previous_post %>
<%= link_to("Next Post", @post.next_post) if @post.next_post %>

Untested, but it should get you close. You can change title to any unique attribute (created_at, id, etc.) if you need a different sort order.

Leave a Comment