2013-11-10 3 views
3

У меня есть Ransack поиск с Ancestry категориями.Ransack поиск показать Ancestry children?

У меня есть категория моделей, страница и категория_страницы. Категории имеют родословную. Теперь я могу искать страницы с определенной категорией. Однако то, что я хотел бы, это показать страницы с одной категорией, а также страницы с категориями детей.

Например, если при поиске в категории программирования, я хотел бы также, чтобы увидеть страницы, которые Рубин на 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 %> 

ответ

1

смешивать форму поиска с нормальными параметрами как

<%= 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 
Смежные вопросы