Как остановить will_paginate от получения каждого сообщения из базы данных - PullRequest
3 голосов
/ 05 сентября 2010

Я просто играю с Ruby on Rails 3.0 с простой доской объявлений и обнаружил несколько проблем с will_paginate.

Наиболее актуальным является то, что каждый раз, когда отображается новая страница, выполняется запрос к базе данных каждого отдельного сообщения в теме.

Как вы можете себе представить, если у вас есть тема с более чем 10000 сообщений, это очень медленно.

Есть ли способ остановить это странное поведение?

Показать контроллер:

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

Модель

cattr_reader :per_page 
@@per_page = 20

вид

<%= will_paginate @posts %>

Ответы [ 2 ]

1 голос
/ 06 сентября 2010

В вашем контроллере попробуйте:

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

Посмотрите на пример в will_paginate документах

0 голосов
/ 16 августа 2011

Обновите will_paginate до версии 3.0.0. Тогда:

class Post
  self.per_page = 20
end

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