В настоящее время я создаю онлайн-библиотеку в Ruby на Rails, в которой есть книги в разных подкатегориях и категориях. Другими словами;
Books belong to Subcategories
Subcategories belong to Categories
Я использую PG_search для функции поиска, и вот мой метод поиска для поиска книг, , который отлично работает :
pg_search_scope :search,
against: [:name, :description, :author, :abstract],
associated_against: { category: [:name ], subcategory: [:name ] },
using: { tsearch: { prefix: true, dictionary: "english" } }
Мое индексное действие моего контроллера выглядит следующим образом:
def index
if params[:query].present?
@books = Book.search(params[:query])
else
@books= Book.all
end
end
Но когда я пытаюсь реализовать фильтр по категории в индексном действии моего контроллера книг:
def index
if params[:category].present? or params[:category][:id].present?
@books = Category.find(params[:category][:id]).books.search(params[:query])
else
@books= Book.all
end
end
Я сталкиваюсь с этой ошибкой:
неопределенный метод `[] 'для nil: NilClass
Вот моя реализация представления
<div class="advanceSearch">
<%= form_tag(books_path, method: :get) do %>
<%= text_field_tag :query, params[:query], {placeholder: 'eg: Ruby', :class => 'searchForm'} %>
<%= collection_select :category, :id, Category.all.order('name ASC'), :id, :name,{include_blank: 'Select Category'}, { :class => 'form-control'} %>
<button type="submit">
Search
<%= image_tag("searchIcon.svg", :alt => "search", :class => "") %>
</button>
<% end %>
</div>
Буду признателен за любую форму помощи, которая позволит мне отфильтровать книги по категориям и , если возможно . Спасибо.