Каминари и страница из elasticsearch

Можно ли иметь помощника Kaminari и использовать уже разбитые на страницы данные:

1. Я запрашиваю elasticsearch и делаю всю разбивку на страницы, чтобы получить 10 записей с 2 ​​страницы.

2. Затем я получаю экземпляры модели

3. экземпляры должны отображаться в пользовательском интерфейсе с кнопками страницы, например. 1,2,3 далее>

Я не знаю, как это сделать с помощником Kaminary, он всегда жалуется:

неопределенный метод `current_page для #‹ActiveRecord::Relation


person Vladimir    schedule 05.07.2013    source источник


Ответы (1)


Я предполагаю, что вы используете gem Tire для интеграции с elasticsearch on rails.

Kaminari по умолчанию работает с набором/коллекцией результатов Activerecord или непосредственно с объектом результатов Tire. Например, если у вас есть модель Post, интегрированная с Tire, вы можете сказать:

results = Post.search do
    query do
        #..
    end
    size 10
    from (page_num - 1) * 10
end

results.next_page #returns true if next page is present
results.total #return total number of search results available

И, на ваш взгляд, вы можете напрямую использовать

<%= paginate results %>

Ключевым моментом является поддержание или сохранение ссылки на набор результатов Activerecord или результаты Tire. Методы разбиения на страницы не определены в экземплярах модели ActiveRecord.

Если вы пытаетесь получить результаты эластичного поиска, то на основе полученных идентификаторов загрузите записи из базы данных, а затем отправьте обратно массив, который вы не можете использовать paginate, вам придется использовать метод kaminari для массивов Разбиение массивов на страницы с помощью Kaminari.

Вместо этого вы можете напрямую указать tire загрузить активные объекты записи:

Post.search 'term', :load => true
person Praveenram Balachandar    schedule 17.01.2014