0

现在在我的帖子控制器下我有方法

 def main
    @post = Post.all
  end

 def show
    @post = Post.find(params[:id])
  end

我想知道在每页显示一篇文章并有下一个和上一个链接的最基本和最简单的方法是什么。这里我指的是main.html.erb. 因此,例如,只有localhost:3000/posts在该页面下,我可以有下一个和上一个链接来浏览帖子。

我需要某种ajax吗?如果不是,那么我如何使用简单的 activerecord 和 Rails 的其他元素来做到这一点?

注意:单击下一步后,我确实需要在 url 选项卡中拥有帖子的永久链接。

4

2 回答 2

1

您可以使用 gem will_paginate 并将每页的默认值设置为 1,如下所示:

class Post
  self.per_page = 1
end

有关 will_paginate 的更多信息: https ://github.com/mislav/will_paginate

于 2013-03-16T11:42:08.443 回答
1

你可以做这样的事情。将上一个和下一个方法添加到您的模型

def previous
  posts = where('id > ?', id).limit(1)
  if posts.nil?
    nil
    else
    posts.first
  end
end

def next
  posts = where('id < ?',id).limit(1)
  if posts.nil?
    nil
    else
    posts.first
  end
end

然后在你看来你可以做这样的事情。

 unless @post.next.nil? #to show the link to the next post
   link_to @post.next
 end
 unless @post.previous.nil? #to show the link to the next post
   link_to @post.previous
 end 

无论如何,这种方法并没有那么优化,因为您将添加更多两个数据库查询来获取上一篇和下一篇文章。

于 2013-03-16T07:25:24.760 回答