Tire + Will_Paginate не использует Tire.options

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

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

@results.inspect дает следующее:

    #<Tire::Search::Search:0x007f88ab9153d0 @indices=["deja-set-development"], @types=[],        @options={:load=>true, :page=>1, :per_page=>2}, @path="/deja-set-development/_search", @query=#<Tire::Search::Query:0x007f88ab915088 @value={:query_string=>{:query=>"oh"}}>, @facets={"type"=>{:terms=>{:field=>:_type, :size=>10, :all_terms=>false}}}>

Здесь я вызываю will_paginate:

= will_paginate @search_results.results, params

Здесь я перебираю результаты

@search_results.results.each

У кого-нибудь есть мысли?

Редактировать ---

Я не уверен, что происходит, но я сделал это, и это работает.

@search_results = @search_results.paginate(:page => params[:page], :per_page => 5)

person ezis    schedule 08.02.2013    source источник
comment
Как у вас обстоят дела с поиском?   -  person Frederick Cheung    schedule 09.02.2013
comment
@search_results = Tire.search(INDEX_NAME, load: true, page: (params[:page] || 1), per_page: 2 ) do   -  person ezis    schedule 09.02.2013
comment
Пожалуйста, отредактируйте свой вопрос и добавьте в него эту информацию. Также, пожалуйста, используйте форматирование кода для лучшей читабельности.   -  person karmi    schedule 09.02.2013


Ответы (2)


Ознакомьтесь с интеграционным тестом в Tire и убедитесь, что вы правильно проходите все параметры.

person karmi    schedule 09.02.2013
comment
Просто чтобы уточнить, с параметрами multi_search page/per_page загружаются неправильно. Это правильно? - person ezis; 12.02.2013

Итак, чтобы уточнить, я прикрепил сюда свою переписку с @karmi на github.

https://github.com/karmi/tire/issues/627#issuecomment-13449368

Я использовал Tire.search вместо поиска по модели. Как отмечает @karmi, на данный момент :per_page и :page не поддерживаются Tire.

Вот как я решил это:

    @search_results = Tire.search [:index1, :index2, :index3], :load => true, :from => from, :size => size  do
        query do
            string q, :default_operator => 'AND', :fields => [:name1, :name2]
        end
    end

В итоге мне пришлось раскрутить свою собственную небольшую систему разбиения на страницы, чтобы увеличить «размер» и «от». Вот ссылка на elasticsearch по теме.

http://www.elasticsearch.org/guide/reference/api/search/from-size.html

Вы по-прежнему можете получить доступ

 = @search_results.results.total_entries/next_page/previous_page 

который помогает с разбиением на страницы.

Еще раз спасибо @karmi.

person ezis    schedule 13.02.2013