我目前正在用Ruby on 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>
我将感谢任何形式的帮助,使我能够
按类别筛选书籍
和
子类别(如果可能)
谢谢。