1

Tire を自分のサイトに統合しようとしていますが、ページネーションに問題があります。Tire のコンテキスト外で結果をページ付けしようとしましたが、will_paginate はその配列で動作しています。ただし、タイヤのコンテキスト内で will_paginate を試すと、大きな問題が 1 つあります。

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)
4

2 に答える 2

1

Tire の統合テストを参照して、すべてのオプションが適切に渡されていることを確認してください。

于 2013-02-09T08:02:26.813 に答える
0

明確にするために、@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 さん、ありがとうございます。

于 2013-02-13T04:19:45.227 に答える