[英]GEM Ransack - using ransack to search through a link - Rails 4
我是铁杆的新手,所以非常感谢你的帮助和建议。
ransack
adverts
的表,其中包含列title
和content
<%= 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 block
仅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
它可以在链接级别完成:
<%= 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.