首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想有一个下一个和前一个链接,功能的下一篇和前一篇文章

我想有一个下一个和前一个链接,功能的下一篇和前一篇文章
EN

Stack Overflow用户
提问于 2012-02-22 06:56:57
回答 2查看 996关注 0票数 0

在一个简单的博客应用程序中,用户可以阅读一篇文章并决定阅读下一篇文章,而无需再次查看文章列表,但单击next按钮,用户将转到该列表中的下一篇文章。如何做到这一点呢?我使用过with和kaminari,它们都是很棒的分页插件。

现在,在show action中,我希望有一个下一篇和前一篇文章的链接,该链接包含下一篇和上一篇文章,我该如何做

下面是要使用的简单代码示例

代码语言:javascript
复制
def show
  @article = Article.find(params[:id])
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-22 07:10:52

您可以向Article添加一个方法来获取下一篇文章和上一篇文章,这取决于您所说的下一篇文章和上一篇文章的意思--即您想要文章的顺序。

例如,使用created_at来定义顺序

代码语言:javascript
复制
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。类似于:

代码语言:javascript
复制
    :conditions => ["created_at > ? or (created_at = ? and id > ?)", self.created_at, self.created_at, self.id]

如果你只想按id排序,那就更简单了,因为id永远不会相同:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-02-22 07:04:09

你可以使用Willpaginate插件来解决你的问题。https://github.com/mislav/will_paginate

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9386649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档