【问题标题】:Ransack search showing Ancestry children?搜查显示祖先的孩子?
【发布时间】:2013-11-22 13:42:56
【问题描述】:

我有Ransack 搜索Ancestry 类别。

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

例如,如果我搜索 Programming 类别,我还想查看以 Ruby on Rails 为类别的页面(以 Programming 作为父类别)

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ransack ancestry


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2011-07-23
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 2023-03-13
      相关资源
      最近更新 更多