我正在尝试将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)
答案 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。