[英]Ruby on rails 4 using filterrific to filter based on checkbox
我在rails应用程序中使用filterrific gem过滤结果,我根据代码的选项过滤事件,如下所示
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>
因此,我在这里所做的是我使用选择框根据事件的类别过滤了事件,但现在我想在选择框中添加功能,即选择框必须包含复选框元素,以便我可以过滤多个类别的结果,因此当我检查一个类别时,它将按该单个类别过滤结果;当我单击另一个类别时,将对具有该类别和先前检查的类别的结果进行过滤
提前解决此问题将对您大有帮助,谢谢
您可以使用multiple: true
,如下所示:
<%= f.select(
:with_category_id,
@filterrific.select_options[:with_category_id],
{ include_blank: ' Any ' },
{ multiple: true, class: 'select-filter'}
) %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.