Монгоидная проблема пагинации - PullRequest
2 голосов
/ 28 октября 2010

Я изо всех сил пытаюсь разбить на страницы, используя mongoid. Я могу вызвать paginate для моего объекта коллекции как

@results = @collections.paginate :page => 1, :per_page => 10

но как на это нужно ссылаться в поле зрения?
На мой взгляд, я частично представил коллекцию как

<%= render :collection => @collections, :partial => collect.xml %>
<%= will_paginate @results %>

В приведенной выше строке я получаю сообщение об ошибке undefined метода total_pages для массива.

Но при удалении вызова will_paginate в представлении ошибки не возникает, и все коллекции отображаются в представлении без разбиения на страницы. Просьба помочь.

Я думаю, что я ошибаюсь, вызывая помощника по поиску страниц. Я искал довольно долго и не нашел примера, который включал бы вызов нумерации страниц для mongoid.

Простите, если это глупый вопрос. Я новичок в mongoid.

1 Ответ

4 голосов
/ 28 октября 2010

Этот вызов метода

@results = @collections.paginate :page => 1, :per_page => 10

заполнит @results массивом из 10 элементов из @collections. Вам вообще не нужно использовать will_paginate, просто используйте объект @results как есть.

Если у вас возникли проблемы с представлением, дающим более 10 результатов, отладьте контроллер и представление, чтобы убедиться, что между обменом данными с массивом @results нет ничего.

EDIT:

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

В свою очередь, ваши ссылки должны будут сообщить контроллеру, какая страница запрашивается, чего можно достичь с помощью параметров запроса GET. Хелперы - это, вероятно, лучший способ сохранить вид в чистоте.

...