2009-09-17 2 views
0

레일에 새 ... 그래서 나와 함께.레일 : 작은 searchlogic 문제

기본 (키워드) 검색을 위해 searchlogic을 설치하고 설정했습니다. 다음 문제가 있습니다 :

@search = Proposal.search(params[:search]) 
@proposals = @search.all 

"red"와 같은 키워드를 입력하면 위 코드가 올바르게 작동합니다. 그것은 빨간색 키워드로 모든 것을 가져올 것입니다. 또는 "녹색"을 입력하면 모든 것이 녹색으로 바뀝니다. 그러나 검색 창에 "빨간색 초록색"을 입력하면 키워드가 빨간색과 초록색 인 경우 (두 키워드 중 하나만있을 수있는 인스턴스는 표시되지 않음) 만 사례를 표시합니다. 예, keywords_like_any를 사용하고 있습니다. 디버그를 통해 일반적인 문제가 무엇인지 알 수 있습니다. keywords_like_any : 초록색입니다. 아래 코드는 내가 원하는대로 작동합니다 (빨간색 또는 녹색의 인스턴스를 가져 오십시오).

@search2 = Proposal.keywords_like_any("red", "green") 
@test = @search2.all 

그래서 내가 문제를 해결하기 위해해야 ​​할 일은 배열로 params [: search]를 보는 첫 번째 코드를 돌리는 것입니다. params [: string] .to_s.split (railscast에 표시된대로)을 시도했지만 작동하지 않았습니다.

누군가가 올바른 방향으로 나를 가리킬 수 있다면, 나는 그것을 감사 할 것입니다.

+0

어떤 클래스가 params [: search]입니까? – perimosocordiae

+0

귀하의 질문에 대한 이해가 확실하지 않습니다. 내가 PARAMS을 디버깅 할 때 비록이 얻을 : ---지도! HashWithIndifferentAccess 커밋 : yfYORg04RDMlEgjr/4004PRTaJ2TJbV0z6Feq + OYXgw = 조치 : : 인덱스 컨트롤러 : 사용자 검색 :지도 : HashWithIndifferentAccess keywords_like_any : asdf을 authenticity_token 제출 category_id_equals : "" 또한 원래 게시물에 언급 된 코드는 내 사용자 컨트롤러에 있습니다. 도움이된다면 제 코드를 붙여 줄 수도 있지만 꽤 표준입니다. 감사합니다. – asdfasdfasdfasdf

답변

0

*_like_any이 체크 박스는 헬퍼 (f.check_box)를 형성하여 params 해시에 배열을 출력하는 사용하기위한 것입니다해야한다 문자열을 출력하는 f.text_field과 반대입니다. 당신은 여전히 ​​f.text_field 함께 사용하려면 다음을 수행 할 수 있습니다

  • 출력에 클라이언트 측 자바 스크립트와
  • 이 필드는 점을 감안하면 컨트롤러

에 분할 배열을 필드 분할 당신은 검색 있습니다 END_STRONG_1 때문에 라인 @proposals = @search.all를 건너 뛸 수 있습니다

params[:search][:keywords_like_any] = params[:search][:keywords_like_any].split(' ') 
@proposals = Proposal.search(params[:search]) 

: 여기라는 이름의 키보드가 문제를 해결해야 할 몇 가지 코드 TS는 배열처럼 작동합니다.

+0

이것은 내 주요 문제를 해결합니다. 그것은 작은 변덕으로 나를 떠났지만. 이제 검색 할 때 페이지를 새로 고친 후 내 검색 창에 "빨간색 녹색"대신 "빨강 색"이 채워집니다. 이상한? – asdfasdfasdfasdf

+0

'form_for를 사용하기 때문에, 이전에 입력 한 값 (검색 객체에서 끝난 값)으로'text_field'를 채 웁니다. 그러나이 값은 배열이므로 문자열로 변환됩니다. '[ 'red', 'green']'=>' "redgreen". @ proposals.keywords_like_any = @ proposals.keywords_like_any.join ("") 코드를 읽을 수 있도록'@proposals' 변수의 이름을'@ search'로 다시 바꿉니다. 그렇지 않아. (따라서'@proposals = @ search.all'로 끝남). – jhchabran

0

당신은 당신이 시도했다 params[:string].to_s.split - 그 오타인지는 모르겠지만, 그것은 params[:search].to_s.split

0

질문을 이해하지 못할 수도 있지만보기에 속한 컨트롤러에 무언가를 구현하려고합니다. 보기의 내용이 다음과 같습니다.

초기 컨트롤러 예제가 작동합니다.

+0

내보기에는 해당 코드가 있으며 위에서 언급 한 것처럼 '작동'합니다. 그러나, 내가 기대했던/원하지 않은 패션에만. – asdfasdfasdfasdf