2

私はランサックを使用しており、ステージ (ドラフト、編集、完了など) と多対多の関係を持つ会場モデルがあります。

これが私のフォームです

= 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}

選択したステージに含まれていない会場を検索する方法はありますか? すなわち:どういうわけかそれらを拒否しますか?

これが私が使用するランサック検索です

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

これが私がやっていたことです:

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

2 に答える 2

2

not_eqViren がコメントで気づいたように、述語を使用するとうまくいくはずです。

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

in複数の選択入力および/not_in述語を使用して、複数の値を含めたり除外したりすることもできます。

于 2013-09-22T12:18:16.080 に答える
0

ransack に関するrailscastのビデオを見たことがありますか?

于 2013-09-18T18:19:50.460 に答える