[英]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.