Ruby on rails 对关联和拒绝进行搜索
我使用的是ransack,我有一个场馆模型,它与阶段(草稿、编辑、完成等)有多对多的关系 这是我的表格Ruby on rails 对关联和拒绝进行搜索,ruby-on-rails,search,ransack,Ruby On Rails,Search,Ransack,我使用的是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]}
= 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}
是否有办法搜索不属于所选阶段的场馆?ie:以某种方式拒绝它们
这是我使用的搜掠搜索
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)}
你看过关于搜捕的录像吗 使用
not_eq
谓词应该有效,正如维伦在评论中注意到的那样
= f.select :stages_id_not_eq, Stage.all.collect{|c| [c.name, c.id]}, {include_blank: true}
您还可以使用多选输入和
/中的而不是谓词中的来包含或排除多个值。您现在正在使用拒绝方法,但您想通过ransack重写它?您是否检查了非谓词,但它没有解释如何拒绝搜索中的查询