如何阻止 will_paginate 从数据库获取每个帖子

发布于 2024-09-17 23:10:38 字数 594 浏览 5 评论 0原文

我只是在使用 Ruby on Rails 3.0 和一个简单的留言板,发现了 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 %>

I am just playing around with Ruby on Rails 3.0 with a simple message board and found several issues with will_paginate.

The most pressing is that each time a new page is displayed a database query of every single post in the topic is performed.

As you can imagine, if you have a topic with 10,000+ posts this is very slow.

Is there a way to stop this odd behavior?

Show controller:

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

Model

cattr_reader :per_page 
@@per_page = 20

view

<%= will_paginate @posts %>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

水晶透心 2024-09-24 23:10:38

在您的控制器中尝试:

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

查看 will_paginate 文档 中的示例

In your controller try:

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

Look at the example in the will_paginate docs

提笔书几行 2024-09-24 23:10:38

将 will_paginate 升级到版本 3.0.0。然后:

class Post
  self.per_page = 20
end

@topic.posts.page(params[:page]).order("post_number")

Upgrade will_paginate to version 3.0.0. Then:

class Post
  self.per_page = 20
end

@topic.posts.page(params[:page]).order("post_number")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文