В моем приложении у меня есть список поставщиков, и у каждого провайдера есть категории. Мои модели выглядят следующим образом:Категории фильтров
class Categorization < ApplicationRecord
belongs_to :category
belongs_to :provider
end
class Category < ApplicationRecord
has_many :categorizations
has_many :providers, through: :categorizations
accepts_nested_attributes_for :categorizations
end
class Provider < ApplicationRecord
has_many :categorizations
has_many :categories, through: :categorizations
accepts_nested_attributes_for :categorizations
end
В свете, у меня есть 2 ul
списки. Первый - это список с провайдерами, а второй - список категорий. Это выглядит следующим образом:
<ul class="nav nav-justified nav-carousel upper-thumbs">
<% Provider.order(created_at: :asc).take(6).each_with_index do |provider, index| %>
<li id="<%= provider.name %>_<%= index + 1 %>" class="btn-up"><a data-href="#"><%= provider.name %></a></li>
<% end %>
</ul>
<ul id="parent" class="nav nav-justified nav-carousel left-thumbs">
<% Category.order(created_at: :asc).take(7).each_with_index do |category, index| %>
<li id="aside_<%= index + 1 %>" class="btn-aside"><i class="category_image" style="background: url(<%= category.cat_image %>) no-repeat;"></i><a data-href="#"><%= category.name %></a></li>
<% end %>
</ul>
Когда у меня не было реализации рельсов, когда я нажал на провайдера (это было жёстко, а также, как категории), я мог видеть, категории фильтровали. Это было сделано с помощью JS:
var $btns = $('.btn-up').click(function() {
if(this.id == 'a') {
$('#parent > li#aside_1').fadeIn(450);
$('#parent > li').not($('#parent > li#aside_1')).hide();
} else {
var $el = $('.' + this.id).fadeIn(450);
$('#parent > li').not($el).hide();
}
$btns.removeClass('active');
$(this).addClass('active');
})
Итак, вопрос заключается в том, чтобы сделать работу фильтра, поэтому, когда я нажимаю на провайдере, он покажет мне только категорию, которая относится к этому провайдеру? Благодарю.
Я добавил ссылку в вид: '<% = link_to provider.name, fetch_providers_path (поставщик: provider.id), удаленного: истинный%>', так что теперь я могу передать Проппер params для контроллера, и я передаю ajax-вызов на 'done()' значения propper из 'json', но ничего не меняется, категории все те же, они не' empty() ' –
Могу ли я показать ваш контроллер метод? –
Сделал это более рельсовым способом, создав файл 'some_method.js.erb', и в этом файле я сделал все необходимые манипуляции. Спасибо за ваш ответ, он подтолкнул меня в правильном направлении. –