Ruby on rails 搜遍了有祖先的孩子?

Ruby on rails 搜遍了有祖先的孩子?,ruby-on-rails,ruby-on-rails-3,ransack,ancestry,Ruby On Rails,Ruby On Rails 3,Ransack,Ancestry,我有分类搜索 我有模型分类,页面和分类页面。类别有其祖先。 现在我可以搜索具有特定类别的页面。但是,我想要的是显示具有一个类别的页面,以及具有子类别的页面 例如,如果我搜索编程类别,我还希望看到RubyonRails作为类别的页面(以编程为父级) 祖先文档有几个选项,我可以测试,但我不知道我要做什么洗劫。如果您能给我一些建议,我将不胜感激 从页面控制器剪下 def index @search = Page.paginate(:per_page => 20, :page => pa

我有分类搜索

我有模型分类,页面和分类页面。类别有其祖先。 现在我可以搜索具有特定类别的页面。但是,我想要的是显示具有一个类别的页面,以及具有子类别的页面

例如,如果我搜索编程类别,我还希望看到RubyonRails作为类别的页面(以编程为父级)

祖先文档有几个选项,我可以测试,但我不知道我要做什么洗劫。如果您能给我一些建议,我将不胜感激

从页面控制器剪下

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 %>
{:class=>“表单内联”}do | f |%>
true},{:class=>'表单控件'}%>
“btn btn信息”%>

将搜索表单与常规参数混合使用 像

<%= 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