我是rails的新手,所以非常感谢您的帮助和建议。
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浏览/广告/ show.html.erb
<%= link_to 'similar jobs', search_adverts_path(q: {advert_title_eq: @advert.title}), class: "fa fa-plus-square" %>发布于 2015-10-08 03:51:19
github回购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
发布于 2015-10-08 01:33:48
它可以在链接级别完成:
<%= link_to 'similar jobs', search_adverts_path(q: {advert_title_cont_any: @advert.title.split}), class: "fa fa-plus-square" %>我在ransack wiki找到的。我在rails控制台上测试了它。
此外,您还需要删除:
if params[:q].present? and params[:q][:advert_title_eq].present?
params[:q][:title_cont] = params[:q][:advert_title_eq]
end在你的控制器上。
https://stackoverflow.com/questions/33003708
复制相似问题