2009-09-23 3 views
2

회원 자격을 사용하는 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 
+0

및 질문은 있을까? – andrewWinn

+0

나는 params [: category_product]를 @products와 함께 사용하는 방법을 잘 모르겠다. –

답변

1

필터링을 위해 속성을 사용해야합니다. define_index에서 'has'메소드를 사용하고 검색에서 : with params를 사용하십시오.

define_index do 
    … 
    has categories(:id), :as => categories_id 
    … 
end 

및 검색은 다음과 같습니다 : 같은 뭔가

Product.search params[:search], :with => { :categories_id => params[:category] } 
+0

thnks 내가 일하고있어, 초보자인데 가능하다면 2 가지를 명확히함으로써 도움이된다면 도움이 될 것이다. 1) 제품 params [: cat]을 사용하는 경우 왜 작동하지 않는가? 내 params [: cat]에서보기에 접근하고 있다고 생각한 이유는 무엇입니까? 만약 내가 그렇게하면 ** searchd 오류 (상태 : 1) : 올바르지 않거나 잘린 요청 2) 내가 ID 대신 name 속성을 사용하려고하면 아무런 결과도주지 않는다. 질문을 생성한다. ex.model에 카테고리가있다. (: category_name), : as => categories_name 컨트롤러 {: categories_name => params [: category]} thnx-a-lot-4- -help –

+0

질문 1, 이해가 안됩니다 (귀하의 의견에 따라 다릅니다). 질문 2, 속성에 문자열을 사용할 수없고 숫자 만 사용할 수 있습니다. 이 경우 ID를 사용하는 것이 좋습니다. 또는 검색을 시작하기 전에 이름으로 카테고리를 먼저 찾아야합니다. – tal

관련 문제