轮胎+ Will_Paginate不接受Tire.options

时间:2013-02-08 20:34:23

标签: ruby-on-rails elasticsearch tire

我正在尝试将Tyre整合到我的网站中,并且我在分页时遇到困难。我已经尝试在Tire的上下文之外对结果进行分页,并且will_paginate正在处理该数组。但是,当我在Tire的上下文中尝试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)

2 个答案:

答案 0 :(得分:1)

请参阅推荐中的integration test,并确保您正确传递所有选项。

答案 1 :(得分:0)

所以为了澄清,我在这里附上了与@karmi的github通信。

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

我使用的是Tire.search而不是按模型搜索。正如@karmi指出的那样,目前:Tire不支持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

我最终不得不旋转自己的小分页系统来增加“大小”和“来自”。这是关于该主题的elasticsearch链接。

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

您仍然可以访问

 = @search_results.results.total_entries/next_page/previous_page 

有助于分页。

再次感谢@karmi。