Куда относится вызов .paginate (...)? - PullRequest
0 голосов
/ 17 марта 2011

прямо сейчас у меня есть это в моем контроллере:

def index
  @votes = Vote.paginate(:page => params[:page], :order=>"created_at DESC")
end

но я собираюсь переместить .paginate в views / index.html.erb (или частично в этот каталог). Мне кажется, что Paginate принадлежит представлению, так как он управляет отображением коллекции голосования. Правильно ли я понимаю разделение MVC?

1 Ответ

5 голосов
/ 17 марта 2011

Нет, вы хотите, чтобы он в контроллере

#paginate изменял ваш запрос так, чтобы он имел предел и начальную точку.

Таким образом, если у вас есть 100 записей, ваша страница со страницей 2 будет называть что-то вроде

select * from votes LIMIT(30) OFFSET(30)

И будет возвращать только 30 записей.Если бы вы сделали то же самое в представлении, ваши @votes имели бы 1000 записей и отсекали бы то, что нужно.

Ваше представление должно быть достаточно тупым и перебирать записи, которые ему дает Контроллер (которые он получает измодель).

...