2013-02-08 39 views
1

我正在嘗試將Tire整合到我的網站中,並且我在分頁時遇到了問題。我試過在Tire的上下文之外對結果進行分頁,並且will_paginate正在處理該數組。但是,當我在Tire的上下文中嘗試使用will_paginate時,我遇到了一個大問題。輪胎+ Will_Paginate未採取Tire.options

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

你是如何做實際的搜索? – 2013-02-08 20:38:41

+0

@search_results = Tire.search(INDEX_NAME,load:true,page:(params [:page] || 1),per_page:2)do – ezis 2013-02-08 21:24:26

+0

請編輯您的_question_並在其中添加此信息。另外,請使用代碼格式以獲得更好的可讀性。 – karmi 2013-02-09 08:03:02

回答

0

爲了澄清,我在這裏附上了我的github與@karmi的通信。

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 

我最後不得不分拆我自己的小分頁系統來增加「大小」和「從」。以下是該主題的彈性搜索鏈接。

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

你能仍然可以訪問

= @search_results.results.total_entries/next_page/previous_page 

與分頁幫助。

再次感謝@karmi。

1

請參閱Tire中的integration test,並確保您正確傳遞所有選項。

+0

只是爲了澄清,multi_search頁面/ per_page選項未正確加載。它是否正確? – ezis 2013-02-12 17:21:32