如何停止从数据库中获取每篇文章的will_paginate
我只是用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 %>
在你的控制器试试:
@posts = Post.paginate_by_topic_id @topic.id, :page => params[:page],:order => "post_number"
看看will_paginate docs中的示例
paginate_by_topic_id未定义,实际上没有paginate_by_xxx方法。响应的唯一分页方法是:“paginate”,“paginate_by_sql”,“paginated_each”。这是使用3.0.pre2这似乎是最新的版本。 – user370731 2010-09-06 02:22:37
帖子中是不是'belongs_to:topic'与'topic_id'列? – danivovich 2010-09-06 15:54:59
我用paginate_by_sql解决了它。 – user370731 2010-09-06 23:02:18
将will_paginate升级到3.0.0版。然后:
class Post
self.per_page = 20
end
@topic.posts.page(params[:page]).order("post_number")
您是否将使用生成的SQL从development.log更新此问题? – marshally 2010-09-07 12:51:35