2016-08-04 3 views
1

나는 샅샅이 검색 양식에 조금 붙어 있습니다.Ruby on rails. 랜섬 (Ransack) 검색 협회

관련 모델의 status == something 일 때만 name_cont을 입력하면 모델 연관을 검색하고 결과를 가져와야합니다.

은 내가 request 모델과 user 모델로 has_many belongs_to 관계와 gig 모델을 가지고있다. request 모델의 속성은 status이고 user 모델의 속성은 publicname입니다. publicname_cont을 검색하고 status == "hired"이있는 요청의 결과 만 표시하고 싶습니다.

현재 내 검색은 request 모델 status과 관계없이 publicname의 결과를 제공합니다.


연주회 컨트롤러 :

@gigs = @q.result(distinct: false).notexpired.order(date: :asc).page(params[:page]).per(20) 

검색 양식 :

<%= search_form_for @q, url: welcome_index_url, remote: false do |f| %> 

     <%= text_field_tag :search, params[:search], class: 'loc-search', placeholder: "Location"%> 
     <%= f.search_field :locationname_cont, placeholder: "Bar name" %> 
     <%= f.search_field :requests_user_publicname_cont, placeholder: "Band name" %> 
     <%= f.submit %> 
<% end %> 

현재, 내가 requests_user_publicname_cont를 검색 할 수 있습니다 그것은 어디 매개 변수 일치 예상대로 나에게 모든 결과를 제공합니다. 내가 이것에 대해 이동하는 방법을 잘 모르겠습니다 requests_user_publicname_contrequests_status_eq, ("hired")


검색 할 수있는 방법을 찾고, 어떤 도움을 주시면 감사하겠습니다, 감사합니다.

답변

2
@q = Gig.joins(:requests).where(requests: { status: 'hired' }).ransack(params[:q]) 
+0

완벽합니다. 고맙습니다. –