繁体   English   中英

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

[英]GEM Ransack - using ransack to search through a link - Rails 4

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

  • 我目前使用的宝石ransack
  • 在我的架构中,我有一个名为adverts的表,其中包含列titlecontent
  • 我试图通过链接创建一个搜索hansack
  • 我有一个名为类似职位的链接[ <%= link_to 'similar jobs', search_adverts_path(q: {advert_title_eq: @advert.title}), class: "fa fa-plus-square" %> ]
  • 目前在我的应用程序中,当用户点击具有标题risk analyst的广告的similar jobs ,它会显示具有确切广告标题“风险分析师”的搜索结果,但我希望显示包含“风险”和“分析师”的搜索结果' - 例如,'业务分析师''风险分析师''金融分析师'等应该显示在搜索结果列表中,但只显示'风险分析师'

我想做的是:

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

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

views / adverts / show.html.erb

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

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 blockif 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

它可以在链接级别完成:

<%= link_to 'similar jobs', search_adverts_path(q: {advert_title_cont_any: @advert.title.split}), class: "fa fa-plus-square" %>

我在ransack wiki找到了。 我在rails console上测试过它。

此外,您还需要删除:

if params[:q].present? and params[:q][:advert_title_eq].present?
  params[:q][:title_cont] = params[:q][:advert_title_eq]
end

在你的控制器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM