2015-10-07 51 views
2

我是新來的鐵軌,所以你的幫助和建議將不勝感激。創業板Ransack - 使用ransack搜索鏈接 - 導軌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,我t顯示具有廣告標題'risk analyst'的搜索結果,但是我想顯示包含'risk'的搜索結果&'analyst' - 例如,'business analyst''risk analyst''financial 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" %> 

回答

4

github回購Ransack link search有類似問題的解決方案。

哪裏,鏈接是:

<%= 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

+0

太棒了!非常感謝你@Shree Ram Neupane – ARTLoe

+0

IMO此答案沒有添加任何東西給我。我在2小時前回答。除了我的建議有一個腳手架。 –

1

它可以在lin完成k級別:

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

我在ransack wiki找到。我在軌道控制檯上測試過它。

此外,你需要刪除:

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

在您的控制器。

+0

謝謝你soo !! @Alejandro Babio – ARTLoe