Desendo de categorías desplegable para la búsqueda de productos
-
13-09-2019 - |
Pregunta
Tengo muchos productos con muchas categorías asociadas con Has_Many usando membresías.
Estoy tratando de crear un cuadro de búsqueda donde cualquiera pueda buscar productos mientras también filtra su búsqueda con un menú desplegable de categoría (por lo que solo se pueden recuperar productos con categorías relevantes).
El índice Thinking_Sphinx está en el modelo de producto. No obtengo ningún error, pero el desplegable no afecta la búsqueda.
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
Solución
Debe usar un atributo para el filtrado. En su define_index use un método 'HAS', y en la búsqueda use A: con Params. Algo como :
define_index do
…
has categories(:id), :as => categories_id
…
end
y la búsqueda sería:
Product.search params[:search], :with => { :categories_id => params[:category] }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow