Обыск, показывающий детей Наследия?

У меня есть поиск Ransack с Происхождение.

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

Например, если я ищу категорию «Программирование», я хотел бы также увидеть страницы, которые Ruby on Rails является категорией (у которой «Программирование» является родительской категорией).

В документах Ancestry есть несколько вариантов, которые я могу протестировать, но я понятия не имею, что мне делать с 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 %>

person Claudio Shigueo Watanabe    schedule 10.11.2013    source источник


Ответы (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
person femto    schedule 17.09.2014