GEM Ransack - 使用ransack搜索链接 - Rails 4

ART*_*Loe 2 ruby-on-rails ruby-on-rails-4

我是铁杆的新手,所以非常感谢你的帮助和建议.

  • 我目前正在使用宝石 ransack
  • 在我的模式我有一个名为表adverts与列title&content
  • 我试图通过链接创建搜索与搜索
  • 我有一个叫做类似职位的链接[ <%= link_to 'similar jobs', search_adverts_path(q: {advert_title_eq: @advert.title}), class: "fa fa-plus-square" %>]
  • 目前在我的应用中,当用户点击similar jobs带有标题的广告时risk analyst,它会显示具有确切广告标题"风险分析师"的搜索结果,但我想要的是显示包含"风险"和"分析师"的搜索结果 - 所以示例,"业务分析师","风险分析师","金融分析师"等应该显示在搜索结果列表中,但只显示"风险分析师"

我想做的是:

  • 当用户查看广告时,例如:风险分析师并点击链接"类似工作",搜索应显示包含"风险"和"分析师"标题的广告

adverts_controller.rb

在我的广告控制器中,我有以下行动:

  def search
    @userj = current_userj
    if params[:q].present? and params[:q][:advert_title_eq].present?
     params[:q][:title_cont] = params[:q][:advert_title_eq]
    end 
    @search = Advert.search(params[:q])
    @adverts = @search.result(distinct: true)
    @active_adverts = @adverts.where(['appdeadline >= ?', Time.zone.today]) #displays adverts with deadline > or = to current date
    @active_adverts_count = @active_adverts.count
  end
Run Code Online (Sandbox Code Playgroud)

views/adverts/show.html.erb

<%= link_to 'similar jobs', search_adverts_path(q: {advert_title_eq: @advert.title}), class: "fa fa-plus-square" %>
Run Code Online (Sandbox Code Playgroud)

Shr*_*ane 8

github repo Ransack链接搜索有类似问题的解决方案.

其中,链接如下:

<%= link_to 'similar jobs', search_adverts_path(q: {title_cont_any: @advert.title.split(' ')}) %>

搜索操作如下:

def search @search = Advert.search(params[:q]) @adverts = @search.result(distinct: true) end

但是,如果你想以自己的方式解决,只需将搜索操作重构if condition block

if params[:q].present? and params[:q][:advert_title_eq].present? params[:q][:title_cont_any] = params[:q][:advert_title_eq].split(' ') end