Я пытаюсь создать страницу, где пользователь может комбинировать фильтры: города и: сектора при вызове модели Entreprise. Настройка работала хорошо, когда у меня был только: city, но когда я добавил: сектор, страница больше не обновлялась. Что я делаю не так, пожалуйста? Кто-нибудь знает, как объединить эти фильтры, пожалуйста?
Моя страница указателя
<div class="col-md-12">
<%= form_tag events_path, method: 'get', id: "events_search" do %>
<% @cities = Event.all.distinct.pluck(:city) - ["", nil] %>
Filter by cities:
<% @cities.each do |city| %>
<div class="btn btn-default">
<%= check_box_tag "by_cities[]", city %> <%= city %>
</div>
<% end %>
<% @sectors = Event.all.distinct.pluck(:sector) - ["", nil] %>
Filter by sector:
<% @sectors.each do |sector| %>
<div class="btn btn-default">
<%= check_box_tag "by_sectors[]", sector %> <%= sector %>
</div>
<% end %>
<% end %>
<br>
</div>
</div>
<div id="events"><%= render 'principal' %> </div>
</div>
<script type="text/javascript">
$(function () {
$('input[type=checkbox]').change(function () {
$.get($('#events_search').attr('action'),
$('#events_search').serialize(), null, 'script');
return false;
});
$('#events_search').submit(function () {
$.get(this.action, $(this).serialize(), null, 'script');
return false;
});
});
</script>
Мой контроллер выглядит так:
class EventsController < ApplicationController
before_action :authenticate_user!
has_scope :by_cities, type: :array
has_scope :by_sectors, type: :array
def index
@events = apply_scopes(Event).all.order("created_at DESC")
end
Моя модель:
scope: by_cities, -> city {where (: city => city)}
область действия: by_sectors, -> сектор {где (: сектор => сектор)}
index.js.erb
$('#events').html('<%= escape_javascript(render('principal')) %>')