2015-03-25 1 views
1

Я новичок, и я пытаюсь выяснить, можно ли использовать Каминари дважды в том же контроллере, что и в моем примере ниже. Я в конечном счете, хотят, чтобы иметь возможность постраничной и отображать два набора результатов поиска на одной странице ....Можно ли использовать Каминари дважды в одном контроллере?

Ex:

def whatever 
    @page = params[:page] ||= 1 
    @per = params[:per] ||= 32 

    @code = query (1st query) 
    @code = query.uniq.to_a 
    @code = Kaminari.paginate_array(@code).page(@page).per(@per) 

    @code2 = query (2nd query) 
    @code2 = query.uniq.to_a 
    @code2 = Kaminari.paginate_array(@code2).page(@page).per(@per) 
end 
+0

Код, который у вас уже есть, должен хорошо работать так, как сейчас, что мне интересно, почему вы разбиваете страницы после преобразования в массив и что isiq делает –

+0

Хороший вопрос. Но в любом случае ему не нужно беспокоиться об этом, так как рельсы ленивы загружают данные для него. @MohammadAbuShady – bsvin33t

+0

Как хорошо, как люди думают, что ленивая загрузка, чрезмерное использование ее убивает вашу производительность, но я не уверен, в какой части вы обращаетесь, но в любом случае я хочу сказать, что если вы разбиваете страницы на массив, что означает, что вы собираетесь запрашивать больше данных, чем вам на самом деле (если не тогда, почему вы используете правую кнопку справа?), и это отходы, просто пусть kaminary обрабатывает запрос и ограничивает результаты только теми «32» элементами, которые вы хотите. –

ответ

1

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

@data = Query.page(params[:page]).per(32) 

если страница nil будет использоваться в качестве страницы 1

Он также имеет множество функций, таких как глобальные в настройках приложения, в настройках модели, и другие, которые я не думаю, что было бы хорошая идея перечислить здесь, вы можете обратиться к gem README для получения более подробной информации.

+0

Спасибо, Mo. Я предполагаю, что причина, по которой я запутался, состоит в том, что пример, который я дал вам ранее, работает в других контроллерах и действиях, где я делаю только один запрос к базе данных, но когда я пытаюсь запросить две разные таблицы, а затем используйте kaminari для paginate Я получаю такие результаты: 'code' – user3648746

+0

вот так? вы забыли остальную часть кода. –

Смежные вопросы