我在Ransack类别中进行了Ancestry搜索。
我有模型category,page和category_page。类别有祖先。
现在,我可以搜索具有特定类别的页面。但是,我要显示的是具有一个类别的页面以及具有子类别的页面。
例如,如果我搜索“编程”类别,那么我还要查看将Ruby on Rails作为类别(以“编程”为父类别)的页面。
祖先文档有几个可以测试的选项,但是我不知道我在Ransack上需要做什么。我会尝试的任何建议,我将不胜感激。
从PagesController删除
def index
@search = Page.paginate(:per_page => 20, :page => params[:page]).search(params[:q])
@pages = @search.result(:distinct => true)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @pages }
end
end
从视图中删除
<%= search_form_for @search, :html => {:class => "form-inline"} do |f| %>
<%= f.label :category_id %>
<div class="form-group" id="div_q_categories_id_eq">
<%= f.collection_select :categories_id_eq, Category.order(:name), :id, :name, {:include_blank => true}, {:class => 'form-control'} %>
<% "f.collection_select :categories_id_eq, Category.order(:name), :id, :name, {:include_blank => true}, {:class => 'form-control', :multiple => true}" %>
</div>
<%= f.submit t("basic.search"), :class => "btn btn-info" %>
<% end %>
最佳答案
将您的搜索表单与常规参数混合
喜欢
<%= search_form_for %>
...other search field
<%= select_tag :category_id,...%>
<% end%>
然后在您的控制器中,
@q = Page.search(params[:q])
@pages = @q.result()
if params[:category_id].present?
all_category_ids = Category.find(params[:category_id]).descendant_ids
@pages= @pages.where(:category_id => category_id)
end
关于ruby-on-rails - 搜查显示祖先的 child ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19894778/