2010-03-21 2 views
2

내가 searchlogic를 설치하고 추가 한 will_paginate 등: Searchlogic 및 태그

나는 현재 acts_as_taggable_on 플러그인을 사용하여 태그를 사용할 수있는 제품 모델이있다. searchlogic을 사용하여 태그를 검색하고 싶습니다. 여기

는 taggable 플러그인 페이지이다 http://github.com/mbleigh/acts-as-taggable-on

각 제품 제가

또는 난 Product.tags를 사용하여 특정 태그에 액세스 할 수 Product.tag_list

를 사용하여 액세스 할 수있는 "tag_list"가 [0]

그러나 검색 논리를 사용하여 검색 범위를 찾을 수 없습니다. 여기 내 작업 양식의 일부입니다.

<p> 
    <%= f.label :name_or_description_like, "Name" %><br /> 
    <%= f.text_field :name_or_description_like %> 
</p> 

내가 시도 : 시도하고 일을하지만 난 시도 옵션을 찾을 수 없습니다 (라는 이름의 범위를 찾을 수 없습니다)라는 오류가 계속 얻을 name_or_description_or_tags_list_like : name_or_description_or_tagged_with_like과 : name_or_description_or_tags_like도. 이 작업을 어떻게 얻을 수 있는지 또는 taggable 플러그인으로 각 제품에 추가 된 태그를 검색 할 수있는 내 자신의 named_scope을 만드는 방법에 대해 궁금합니다.

감사합니다.

답변

2

Searchlogic은 기존 명명 된 범위를 사용합니다. 에서 taggable-act-as-taggable- 설명서를 보면 그 taggable 모델은 tagged_with 명명 된 스코프를 얻습니다. 그래서 Product.tagged_with ("tag")는 "tag"태그가 붙은 모든 제품을 제공해야합니다. 당신은 하나 :name_like_or_description_like_or_tagged_with을 사용할 수 있습니다

Product.name_like_or_description_like_or_tagged_with("...") 

: 당신이 일치하는 텍스트 주어진 모든 이름의 제품과 마찬가지로, 설명과 같은 또는 태그를 찾으려면, 그래서 만약 당신이 다음과 같은 범위를 사용한다,와 "또는"searchlogic에 조건을 결합 할 수 있습니다 직접 형태로, 또는 당신은 검색을 위해 사용자 정의 범위 프로 시저를 만들 수 있습니다

scope_procedure :matching, lambda {|text| 
    name_like_or_description_like_or_tagged_with(text) 
} 

그런 다음 형태로, 단지 :matching를 사용합니다.

<p> 
    <%= f.label :matching, "Search term" %><br /> 
    <%= f.text_field :matching %> 
</p> 
+0

미할, 나는 그것을 사용하는 방법을 오해하고 있었다. 필자는 저자가 named_score를 "tagged_with"라고 썼다는 것을 보았고, 나는 그것을 시도했지만 올바르게 해석하지 못했다고 말했다. 나는 그 반응에 감사한다. 그러나, 나는

\t \t 을 사용하려고 할 때 <% = f.label : name_like_or_description_like_or_tagged_with, "이름"%>
\t \t <% = f.text_field : name_like_or_description_like_or_tagged_with %> 나는 오류가 발생했습니다 \t

" 필드에 값을 입력 할 때 잘못된 인수 수 (0은 1)입니다. 왜 이렇게 할 수 있는지 아십니까? – jim

+0

이 오류를 발생시키는 작업 코드는 무엇입니까? Rails 콘솔에서'Product.name_like_or_description_like_or_tagged_with ("...")'를 실행 해 보셨습니까? –

+0

나는 scope_procedure를 설정하는 것을 시도해 보았고, 당신이 name_or_description_or_matched_like를하지 않고있는 당신의 일치하는 예제에서 말한 것처럼 잘 작동한다. tagged_with 나 사용자 정의 범위를 연결할 수 없으므로 이제 무엇을해야할지 확신 할 수 있습니다.나는 콘솔과 응용 프로그램에서 모두 시도했다. – jim