Ruby ransack过滤器选项取决于结果

时间:2015-10-27 18:32:59

标签: ruby ruby-on-rails-4 gem ransack ancestry

我正在使用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

然后使用结果填充下拉列表。 有人有一个巧妙的伎俩吗?

0 个答案:

没有答案