如何使用Ransack使用复选框构建高级搜索?

时间:2016-03-12 02:30:45

标签: ruby-on-rails ruby ruby-on-rails-4 checkbox ransack

我如何建立高级搜索这个图像的方式:

advanced search with checkboxes

我有我的控制器,非常基本但是:

def index
    @q = Product.ransack(params[:q])
    @products = @q.result(distinct: true)
  end

并有我的观点:

<%= search_form_for @q do |f| %>
  <%= f.label :name_cont, "Name" %>
  <br />
  <%= f.search_field :name_cont %>
  <br />
  <%= f.label :brand, "Brand" %>
  <br />
  <%= f.collection_check_boxes :brand, Product.all, :id, :brand %>
  <br />
  <%= f.label :hd, "HD" %>
  <br />
  <%= f.collection_check_boxes :hd, Product.all, :id, :hd %>
  <br />
  <%= f.label :ram, "RAM" %>
  <br />
  <%= f.collection_check_boxes :ram, Product.all, :id, :ram %>
  <br />
  <%= f.submit "Search" %>
<% end %>

但是,唯一适用于搜索的是输入名称。我有两个问题。 1º复选框不起作用。 2º有些复选框正在重复,因为我放了Product.all,但是太过分了,但没有任何效果= / 你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

你可以尝试关注品牌,高清和ram

<% Product.pluck('distinct brand').each do |brand| %>
 <%= check_box_tag('q[brand_cont_any][]', brand ) %>
 <%= brand %>
<% end %>