我正在使用ransack来搜索和过滤列表应用程序的结果。一个过滤器按类别缩小搜索范围(使用祖先),另一个过滤器缩小搜索位置(保存在列表表格中)。
到目前为止,它们分开工作,这意味着我无法同时过滤这两个属性。
我想知道的是过滤器"正在谈论"对彼此。这意味着如果我选择一个类别,位置过滤器应该只显示实际上有类别和位置结果的位置。说得通? 如何在控制器内实现这一目标?
我当前的常规搜索有效:
if params[:category]
@category = Category.find_by_slug(params[:category])
@search = Listing.search(country_cont: params[:country], state_cont: params[:state], city_cont: params[:city], category_id_in: @category.subtree_ids)
else
@search = Listing.search(country_cont: params[:country], state_cont: params[:state], city_cont: params[:city])
end
我试过这样的事情:
@category_filter = Listing.search(country_cont: params[:country], state_cont: params[:state], city_cont: params[:city])
@country_filter = Listing.search(country_cont: params[:country], state_cont: params[:state], city_cont: params[:city], category_id_in: @category.subtree_ids)
@category_dropdown = @category_filter.result
@country_dropdown = @country_filter.result
然后使用结果填充下拉列表。 有人有一个巧妙的伎俩吗?