2015-10-15 56 views
0

我使用filterrific宝石在我的Rails应用程序来筛选结果,我有一个基于选项 我的代码将被过滤的事件如下的Ruby on使用filterrific轨道4过滤器的基础上复选框

event.rb

filterrific :default_filter_params => { :sorted_by => 'created_at_desc' }, 
       :available_filters => %w[ 
       sorted_by 
       search_query 
       with_category_id 
       with_area 
       ] 

# default for will_paginate 
    self.per_page = 9 

scope :with_category_id, lambda { |category_ids| 
          where(category_id: [*category_ids]) 
         } 

events_controller.rb

def index 
    @filterrific = initialize_filterrific(
     Event, 
     params[:filterrific], 
     :select_options => { 
      sorted_by: Event.options_for_sorted_by, 
      with_category_id: Category.options_for_select 

     } 
    ) or return 
    @events = @filterrific.find.paginate(page: params[:page], per_page: 6).where(is_job: false) 


    respond_to do |format| 
     format.html 
     format.js 
    end 
end 

index.html.erb

<%= form_for_filterrific @filterrific, :class => 'col s12' do |f| %> 

      <%= render_filterrific_spinner %> 
      <%= f.hidden_field :source , :value => 'event' %> 
      <div class="col s12 m3 "> 
      <div class="filter-container"> 
      <li> 
        <%= f.select(
            :with_category_id, 
            @filterrific.select_options[:with_category_id], 
            { include_blank: ' Any ' }, 
            class: 'select-filter' 
         ) %> 

         <label>select category</label> 

       </li> 
      </div> 
      <%= link_to(
         'Reset filters', 
         reset_filterrific_url, 
       ) %> 
      </div> 
     <% end %> 

<%= render(
               partial: 'events/list', 

             ) %> 

index.js.erb的

<% js = escape_javascript(
    render(partial: 'events/list') 
) %> 
$("#filterrific_results").html("<%= js %>"); 
$('#filterrific_results').load(document.URL + ' #filterrific_results'); 

_list.html.erb

<div id="filterrific_results"> 
<% @events.each do |event| %> 
<%= link_to event.name, company_event_path(event.company.id, event.id) %> 
<% end %> 

</div> 

所以我在做什么这里是我过滤了事件b选择框 ,但现在我想在选择框中添加该功能,选择框必须包含复选框元素,以便我可以筛选多个类别结果,以便当我检查一个类别时,它将过滤由单一的类别,当我点击另一个类别,将过滤与该类别和以前的分类结果,结果被查

将是一个很大的帮助,以解决这个问题,Thankx提前

回答

0

你可以使用multiple: true,像这个:

<%= f.select(
            :with_category_id, 
            @filterrific.select_options[:with_category_id], 
            { include_blank: ' Any ' }, 
            { multiple: true, class: 'select-filter'} 
         ) %>