I'm new in Rails... smile
In my blog aplication I want to have a "Previous post" link and a "Next post" link in the bottom of my show view.
How do I do this?
Thanks!
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.
I used the model methods as below to avoid the issue where id + 1 doesn't exist but id + 2 does.
def previous
Post.where(["id < ?", id]).last
end
def next
Post.where(["id > ?", id]).first
end
In my view code, I just do this:
<% if @post.previous %>
<%= link_to "< Previous", @post.previous %>
<% if @post.next %>
<%= link_to "Next >", @post.next %>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With