2012-08-29 2 views
0

Ransack :: Search 객체를 생성하여 search_form_for에 전달할 수 있지만 검색 객체의 초기 생성은 원하지 않는 데이터베이스를 쿼리합니다.DB를 쿼리하지 않고 Ransack 객체를 생성하십시오.

데이터베이스를 호출하지 않고 Ransack :: Search 옵션을 사용하여 검색 할 초기 공백 양식을 표시하려고합니다.

어떻게하면됩니까?

덕분에,

관련

답변

0

Arel 관계 (예. 쿼리) 결과에 대한 첫 번째 참조에 유유히-실행됩니다, 그래서 당신은 당신이 검색 개체를 만들 수 있습니다 것을 발견하고 양식에 전달한다 , 어디서나 .result 메소드를 참조하지 않는 한 db를 호출하지 않아도된다.

// in your controller 
my_query = MyModelClass.where{ id.gt(0) } 
@q = my_query.search(params[:q]) 

// in your view 
search_form_for(@q, (...other options...)) 

이들의 모든

은 DB 쿼리를 실제로 수행 할 수 트리거 :

- @q.results.each do |result| 
- for result in @q.results 
- @q.results.count 
- @q.results.to_a 
- @q.results.size 
// ....etc 

그러나 너무 오래 만 양식의 검색 객체를 사용할 때, 그것은 실행되지해야합니다.

물론 콘솔에서 테스트 할 경우 행 끝에 ;nil을 입력해야합니다. 그렇지 않으면 콘솔에서 마지막으로 계산 된 것이 인쇄되어 쿼리가 실행됩니다!

+0

예, github 저장소에서 문제를 해결했지만 답변을 추가하지 않았습니다. 감사합니다. :-) – mongeta