2013-08-01 2 views
1

나는 ransack을 사용하고 있으며, 여러 단계 (초안, 수정, 완료 등)와 많은 관계가있는 Venue 모델을 보유하고 있습니다. 여기협회에서 Ransack을 검색하여 거부합니다.

선택한 단계의 일부가 아닌 장소를 검색 할 수있는 방법이 있나요 내 양식

= search_form_for @q, url: search_admin_venues_path, html: {method: :post} do |f| 
    = f.label :name_cont 
    = f.text_field :name_cont 
    = f.select :stages_id_eq, Stage.all.collect{|c| [c.name, c.id]}, {include_blank: true} 

입니까? 즉 : 어떻게 든 그들을 거부합니까?

stage_obj = Stage.find_by_name(params[:stage]) 
@venues = Venue.all.includes(:stages).reject{|v| v.stages.include?(stage_obj)} 
+0

지금 reject 메소드를 사용하고 있지만 ransack을 통해 다시 작성하고 싶습니까? –

+1

'not_eq' 술어 – Viren

답변

2

Viren이 논평에서 주목했듯이 not_eq 술어를 사용해야합니다.

= f.select :stages_id_not_eq, Stage.all.collect{|c| [c.name, c.id]}, {include_blank: true} 

또한 포함하거나 여러 선택 입력 및 in/not_in 술어를 사용하여 여러 값을 제외 할 수 있습니다.

0

당신이 더듬다에 railscast 비디오를 본 적이 : 여기

내가

여기
def search 
    @q = Venue.search(params[:q]) 
    @venues = @q.result(distinct: true)  
    render :index 
    end 

내가 할하는 데 사용 무엇을 사용하는 더듬다 검색입니까?

+0

예를 확인 했습니까?하지만 검색에서 쿼리를 거부하는 방법은 설명하지 않습니다. – map7