在一个简单的博客应用程序中,用户可以阅读一篇文章并决定阅读下一篇文章,而无需再次查看文章列表,但单击next按钮,用户将转到该列表中的下一篇文章。如何做到这一点呢?我使用过with和kaminari,它们都是很棒的分页插件。
现在,在show action中,我希望有一个下一篇和前一篇文章的链接,该链接包含下一篇和上一篇文章,我该如何做
下面是要使用的简单代码示例
def show
@article = Article.find(params[:id])
end发布于 2012-02-22 07:10:52
您可以向Article添加一个方法来获取下一篇文章和上一篇文章,这取决于您所说的下一篇文章和上一篇文章的意思--即您想要文章的顺序。
例如,使用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')这假设没有任何东西在date创建了相同的内容,这可能有点过于简单,所以您可能也想检查id。类似于:
:conditions => ["created_at > ? or (created_at = ? and id > ?)", self.created_at, self.created_at, self.id]如果你只想按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发布于 2012-02-22 07:04:09
你可以使用Willpaginate插件来解决你的问题。https://github.com/mislav/will_paginate
https://stackoverflow.com/questions/9386649
复制相似问题