2010-09-05 60 views
3

我只是用Ruby on Rails 3.0與簡單的留言板一起玩,並發現與will_paginate有幾個問題。如何停止從數據庫中獲取每篇文章的will_paginate

最緊迫的是每次顯示新頁面時,都會執行主題中每個帖子的數據庫查詢。

正如你所想象的,如果你有一個有超過10,000個帖子的主題,這是非常緩慢的。

有沒有辦法阻止這種奇怪的行爲?

顯示控制器:

@[email protected] 
@posts = Post.paginate @posts, :page => params[:page],:order => "post_number" 

型號

cattr_reader :per_page 
@@per_page = 20 

視圖

<%= will_paginate @posts %> 
+1

您是否將使用生成的SQL從development.log更新此問題? – marshally 2010-09-07 12:51:35

回答

1

在你的控制器試試:

@posts = Post.paginate_by_topic_id @topic.id, :page => params[:page],:order => "post_number" 

看看will_paginate docs中的示例

+0

paginate_by_topic_id未定義,實際上沒有paginate_by_xxx方法。響應的唯一分頁方法是:「paginate」,「paginate_by_sql」,「paginated_each」。這是使用3.0.pre2這似乎是最新的版本。 – user370731 2010-09-06 02:22:37

+1

帖子中是不是'belongs_to:topic'與'topic_id'列? – danivovich 2010-09-06 15:54:59

+0

我用paginate_by_sql解決了它。 – user370731 2010-09-06 23:02:18

0

將will_paginate升級到3.0.0版。然後:

class Post 
    self.per_page = 20 
end 

@topic.posts.page(params[:page]).order("post_number") 
相關問題