在RoR中限制结果的常见做法是什么?

时间:2010-07-12 15:28:42

标签: ruby-on-rails

情况会像这样.... ....用户有很多帖子。但是,如果我将所有帖子循环回来,它将变得非常缓慢。所以,我可以回顾前十(1-10)。当用户点击“下一步”时,它将获得(11-20)。所以,我的问题是,我该如何实现它?谢谢。

<%=h @user.posts.inspect  %> <!--It can  show all the posts, but I want first ten only-->

2 个答案:

答案 0 :(得分:3)

大多数Rails开发人员都使用will_paginate gem,并且有充分的理由,因为它非常容易使用:

# In your controller
@posts = @user.posts.paginate, :page => params[:page]

# In your view template
<%= will_paginate @posts %>

答案 1 :(得分:0)

这取决于您是否关心用户是否错过某些帖子或在帖子的基础列表发生更改时多次看到几个帖子。如果您需要确保不会发生这种情况,则需要创建基础列表的快照,然后对快照列表进行分页。我通常将列表快照存储在db表中,并使用守护程序使旧条目到期。如果您使用该方法,您可能希望将列表中的项目数最大化为1000个帖子,以便db条目不会变得太大。