簡體   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