2012-08-05 97 views
5

我使用Ransack通過某些模型執行相當複雜的搜索。其中一個模型包含自由文本並使用acts_as_taggable gem來標記單詞。使用Ransack搜索標籤

我正在嘗試創建這些單詞的集合選擇器,以便ransack可以從用戶可以定義的標籤子集中找到任何全文記錄。

這使我幾乎在那裏,但如果我嘗試選擇多個單詞,它不會返回任何結果!

= f.select :note_in, @freetexts.tag_counts_on(:tags), {}, {:multiple => true} 

回答

0

Ransack並非真正面向複雜的搜索。如果你足夠強調搜索速度,你很可能會遇到一個更難的問題,那就是如果你在哪裏做一個複雜的選擇。

對於複雜的搜索,我會推薦Sequel,來自ransack的相同作者,更好地面向複雜搜索。

此外,根據THES線程你是一個死衚衕: Ransack and acts-as-taggable-on issues

0

我不是專家在所有,但這種非洗劫解決方案可以爲那些需要通過標籤篩選工作作爲可標記的寶石:

@search = MyModel.ransack(params[:q]) 
@result = @search.result(distinct: true).includes(:related_model) 
@result = @result.tagged_with(params[:tags].split(/\s*,\s*/)) if params[:tags].present? 
@result = @result.paginate(page: params[:page], per_page: 20) 

這需要一個新的:超出Ransack範圍的標籤參數。您可以使用篩選出Ransack爲您提供的結果。