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 
¿Fue útil?

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
scroll top