выпадающий список категорий для поиска товара
-
13-09-2019 - |
Вопрос
У меня есть много продуктов со многими категориями, которые связаны с has_many с помощью членства.
Я пытаюсь создать окно поиска, в котором любой может искать товары, а также фильтровать их поиск с помощью выпадающего списка категорий (таким образом, можно получить только товары с соответствующими категориями).
Индекс thinking_sphinx находится в модели продукта Я не получаю никаких ошибок, но выпадающий список не влияет на поиск.
MODEL:
has_many :memberships,:dependent=> :destroy
has_many :categories, :through => :memberships
named_scope :published, :conditions => {:publish => 1}
define_index do
indexes product_name
indexes product_description
indexes publish
indexes memberships.product_id
indexes memberships.category_id
indexes categories.category_name
end
end
CONTROLLER:
@products = Product.search params[:search],:conditions=>{@product.memberships.category_id =>params[:category_product] },:page=> params[:page] || 1,:per_page =>4
VIEW:
form_tag search_path, :method =>:get do
text_field_tag :search, params[:search]
form_tag categories_path, :method => :get do
select_tag"category", options_from_collection_for_select (Category.find (:all, :group=>:id), :id, :category_name,params[:category_product])
end
submit_tag "search", :name => nil
end
Решение
Вам нужно использовать атрибут для фильтрации.В вашем define_index используйте метод 'has', а в поиске используйте a :с параметрами.Что -то вроде :
define_index do
…
has categories(:id), :as => categories_id
…
end
и поиск был бы таким :
Product.search params[:search], :with => { :categories_id => params[:category] }
Не связан с StackOverflow