在一个简单的博客应用程序中,有人可以阅读文章并决定阅读下一篇文章,而无需再次浏览文章列表,但单击下一个按钮,它会将此人带到此列表中的下一篇文章。如何才能做到这一点。我曾与willpaginate和kaminari合作,他们都是很好的分页插件。
所以现在在节目动作中我希望有一个下一个和上一个链接,这个链接在下一篇和上一篇文章中如何做到这一点
下面的简单代码示例与
一起使用def show
@article = Article.find(params[:id])
end
答案 0 :(得分:1)
您可以向Article
添加一个方法,以获取下一篇和之前的文章,具体取决于您对下一页和之前的内容 - 即您希望文章的顺序。
E.g。用created_at
来定义订单
def next
self.class.find(
:first,
:conditions => ["created_at > ?", self.created_at],
:order => 'created_at, id')
end
def previous
self.class.find(
:first,
:conditions => ["created_at < ?, self.created_at],
:order => 'created_at desc, id desc')
假设在日期没有创建相同的东西,这可能有点过于简单,所以你也可能想要检查id。类似的东西:
:conditions => ["created_at > ? or (created_at = ? and id > ?)", self.created_at, self.created_at, self.id]
如果你只是想通过id订购那么它就更加微不足道,因为它们永远不会是相同的:
def next
self.class.find(:first,
:conditions => ['id > ?', self.id],
:order => 'id')
end
def previous
self.class.find(:first,
:conditions => ['id < ?', self.id],
:order => 'id desc')
end
答案 1 :(得分:0)
您可以使用Willpaginate插件解决您的问题。 https://github.com/mislav/will_paginate