2010-07-12 48 views
0

情況會這樣...... ....用戶有很多帖子。但是如果我將所有帖子循環,它將變得非常緩慢。所以,我可以回頭看前十(1-10)。當用戶點擊「下一步」時,將獲得(11-20)。所以,我的問題是,我怎麼能實現它?謝謝。限制RoR結果的常用做法是什麼?

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

回答

3

大多數Rails開發者使用will_paginate寶石本有很好的理由,因爲它真的很容易使用:

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

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

看起來不錯,我會試一試。 – Tattat 2010-07-12 15:49:04

+0

我得到一個語法錯誤,所以我使用這個:@ user.posts.paginate:page => params [:page],但它仍然不能顯示任何東西...我嘗試使用<%= h @ posts。長度%> <%= will_paginate @ posts%> 它可以顯示長度,但別無其他 – Tattat 2010-07-12 16:28:40

+0

如果您在使用will_paginate時遇到問題,請將其作爲單獨問題發佈,並附上適當的詳細信息。 – 2010-07-12 16:30:48

0

,如果你關心取決於如果用戶錯過一些帖子或者看到了當帖子的基礎列表發生變化時,多次發貼很少。如果您需要確保不會發生這種情況,您需要製作底層列表的快照,然後在快照列表中進行分頁。我通常將列表快照存儲在數據庫表中,並使用守護程序過期舊條目。如果您使用該方法,您可能希望將列表中的項目數量最大化爲1000個帖子,以便db條目不會變得太大。