【问题标题】:Ruby on Rails ransack gem searchRuby on Rails 洗劫 gem 搜索
【发布时间】:2019-03-18 23:39:03
【问题描述】:

我想实现一个遍历多个模型的搜索。

找到了这个stackoverflow question here,它使用了ransack,并立即尝试了。但我似乎无法让它工作。

在我的控制器中:

def search
  @quotes = Quote.search(title_cont: q).result
  @books = Book.search(title_cont: q).result
  @users = User.search(username_cont: q).result
end

路线

get '/search', to: 'application#search'

查看

<%= form_tag search_path, method: :get do %>
  <%= f.label :title_cont %>
  <%= f.search_field :title_cont %>
  <%= text_field_tag :q, nil %>
<% end %>

【问题讨论】:

  • 你现在有什么问题?你有什么错误吗?
  • 没关系,我已经解决了你的问题。写一个答案。

标签: ruby-on-rails ruby ransack


【解决方案1】:

您应该使用params[:q] 而不是q。这应该工作

def search
  @quotes = Quote.search(title_cont: params[:q]).result
  @books = Book.search(title_cont: params[:q]).result
  @users = User.search(username_cont: params[:q]).result
end

此外,f.label 和 f.search_field 不适用于 form_tag。您应该改用label_tag 和search_field_tag

<%= form_tag search_path, method: :get do %>
  <%= label_tag :title_cont %>
  <%= search_field_tag :title_cont %>
  <%= text_field_tag :q, nil %>
<% end %>

【讨论】:

  • 我试过了,但没有看到任何结果。我是否必须为此设置@results?我将如何在结果页面上显示它们?
  • @flenning12 我不知道,因为我从未与 ransack 合作过,但我可以提供一些指示。检查此以获取演示 sitepoint.com/advanced-search-ransack
【解决方案2】:

为什么你的搜索表单中有两个字段,你应该只有一个搜索字段。

<%= form_tag search_path, method: :get do %>
  <%= label_tag :title_cont %>
  <%= search_field_tag :q %>
<% end %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 2012-04-03
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多