2013-02-06 55 views
0

我正在通過使用acts_as_indexed和will_paginate一起實現搜索功能。我使用的是Ruby 1.8.7和Rails 2.3.11。不,我無法升級Ruby,因爲我使用的是共享主機。 (我看着will_paginate和acts_as_indexed產生奇怪的分頁結果

-The葡萄酒都是從數據庫中檢索:

經常使用的「PAGINATE」方法產生預期的結果,但是用「paginate_search」(acts_as_indexed分頁方法)的時候,我會有奇怪的結果日誌和查詢看起來不錯)
- 它這麼砸了,產生不一致「的單頁」的結果

假設3個對象的搜索結果的分頁:

設置每頁1,獲得除了第4頁,第12頁和第18頁外,所有頁面共18頁 將每頁設置爲2,除了第2,6和9頁(除了第2頁,第6頁和第9頁外,其餘頁面均爲9頁)(請參閱此處的模式?)
將每頁設置爲3, 4和6
- 上述所有模式的收益率爲結果頁面

於是就等等...這似乎有一些時髦的數學怎麼回事,但我不知道在哪裏,或者爲什麼1分的結果。

回答

0

好吧,我想出了一個解決問題的方法。本質上,我正在把條件放入搜索功能中,這個功能只是把它搞砸了。這是一個簡單的「stock> 0」字符串,我不知道爲什麼它與acts_as_indexed混淆,但不管。解決方法是添加一個名爲'stocked'的搜索屬性。任何有庫存的產品都可以通過「庫存」這個術語進行搜索,任何沒有庫存的葡萄酒都沒有這個屬性。我沒有在搜索方法中加入:conditions參數,而是在必要時將「stocked」字符串附加到搜索字符串中。它現在有效。下面的代碼片段:

Wine.rb

# ... = indicates other attributes 
acts_as_indexed :fields => [..., :stock_search] 

def stock_search 
    'stocked' if stock > 0 
end 

wines_controller.rb

srch = "#{ safe_tags * " " }#{ ' stocked' if params[:search_all].nil? }" 
@wines = Wine.paginate_search(srch, :page => pg, :per_page => 10, :include => [{:awards => [:medal, :competition]}, {:reviews => :reviewer}]) 

因此,要回顧:

這工作:Wine.paginate_search("cabernet stocked", :page => pg, :per_page => 10)

這不是:Wine.paginate_search("cabernet", :conditions => "stock > 0", :page => pg, :per_page => 10) ......在技術上很好的搜索工作,但分頁沒有。

希望這可以幫助別人遇到同樣的問題。

相關問題