首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GEM Ransack -使用ransack搜索链接- Rails 4

GEM Ransack -使用ransack搜索链接- Rails 4
EN

Stack Overflow用户
提问于 2015-10-07 22:48:47
回答 2查看 2.3K关注 0票数 2

我是rails的新手,所以非常感谢您的帮助和建议。

  • 我目前正在使用gem 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

在我的广告控制器中,我有以下动作:

代码语言:javascript
复制
  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

代码语言:javascript
复制
<%= link_to 'similar jobs', search_adverts_path(q: {advert_title_eq: @advert.title}), class: "fa fa-plus-square" %>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 8
EN

Stack Overflow用户

发布于 2015-10-08 01:33:48

它可以在链接级别完成:

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

我在ransack wiki找到的。我在rails控制台上测试了它。

此外,您还需要删除:

代码语言:javascript
复制
if params[:q].present? and params[:q][:advert_title_eq].present?
  params[:q][:title_cont] = params[:q][:advert_title_eq]
end

在你的控制器上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33003708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档