1

我正在尝试将轮胎集成到我的网站中,但我在分页时遇到了困难。我尝试在轮胎上下文之外对结果进行分页,而 will_paginate 正在处理该数组。但是,当我在轮胎的上下文中尝试 will_paginate 时,我遇到了一个大问题。

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 。

这是我解决这个问题的方法:

    @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

我最终不得不旋转我自己的小型分页系统来增加“大小”和“来自”。这是有关该主题的弹性搜索链接。

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 回答