Может быть, кто-то из вас, ребята, сможет помочь мне с этим.
Допустим, у меня есть книга Модель.Я хочу найти все названия своих книг, что я уже сделал с помощью select2rails.Каждая книга принадлежит категории, и я хочу включить функцию «фильтр», в которой я выбираю категорию, и моя строка поиска показывает мне все результаты, но только в пределах выбранной категории.
, например:
У меня есть книга под названием «Властелин колец», которая относится к категории фэнтези.У меня также есть книжный повелитель семьи, которая принадлежит к категории семьи.когда я введу лорда в строке поиска, будут показаны оба заголовка, но я хочу иметь возможность выбрать категорию.
(я прочитал документацию по select2 и не смог найти ничего, чтопомог бы мне в этом.)
пример: категория выбрана = фэнтези
Я печатаю лорда, и будет показан только лорд колец.
Как мне этого добиться?
<!-- Search Widget -->
<div class="card my-auto">
<%= form_with url: books_path , method: :get, local: true do |f| %>
<div class="card-body">
<p>Search for a Book title.</p>
<%= f.collection_select(:book_id, Book.all, :id, :title, {include_blank: 'Book titles'}, {class:'selectbooktitle form-control'}) %>
<hr>
<div class="input-group">
<span class="input-group-btn">
<%= f.submit 'Search', class: 'btn btn-outline-success', method: :put %>
</span>
</div>
</div>
</div>
<% end %>
book.rb
class Book < ApplicationRecord
belongs_to :user
belongs_to :category
has_many :reviews, dependent: :destroy
has_attached_file :book_cover, styles: { book_index: '250x350>', book_show: '325x475>' }
validates_attachment_content_type :book_cover, content_type: /\Aimage\/.*\z/
end
books_controller
def index
if params[:category].blank?
@books = Book.all.order('created_at DESC')
else
@category_id = Category.find_by(name: params[:category]).id
@books = Book.where(category_id: @category_id).order('created_at DESC')
end
return redirect_to book_path(params[:book_id]) if params[:book_id]
end