Как реализовать фильтр категорий для searchkick. По сути, у меня есть поле ввода, которое принимает термин запроса, но я также хочу раскрывающийся список, в котором пользователи могут выбирать категорию для поиска или искать во ВСЕХ категориях. Между записями и категориями существует связь «многие ко многим».
Мои модели:
-- post.rb
class Post < ActiveRecord::Base
has_many :post_categories
has_many :categories, through: :post_categories
searchkick text_start: [:title]
end
-- category.rb
class Category < ActiveRecord::Base
has_many :post_categories
has_many :posts, through: :post_categories
end
--post_category.rb
class PostCategory < ActiveRecord::Base
belongs_to :post
belongs_to :category
end
Теперь в моем действии индекса posts_controller у меня есть следующее, которое работает до сих пор, возвращая все сообщения, соответствующие параметру запроса, или возвращает все сообщения, если во входных данных поиска не указан параметр запроса.
class PostsController < ApplicationController
def index
query = params[:q].presence || "*"
@posts = Post.search (query)
end
end
Пока это работает хорошо. Но я также хочу добавить в представление фильтр категории, чтобы пользователь мог выбрать поиск строки запроса в определенной категории или поиск во всех категориях, если ни одна категория не выбрана. Заранее спасибо.