使用Ransack一次搜索多个模型

Dan*_*iel 17 ruby search ruby-on-rails ransack

我的应用程序标题中有一个搜索表单,我想使用此搜索表单在应用程序中搜索多个模型.

例如像一个请求/search?q=rails应触发通过多个模型如搜索Work,Project,User和它们的定义的属性.我想使用Ransack,因为我已经Work在应用程序的不同区域的模型上使用它.

我想我还不太了解Ransack,文档总是指出你必须定义@q = MyModel.search(params[:q])在表单中使用它search_form_for @q.有没有一种方法可以提前定义特定模型?只需传递参数名称即可search_form_for :q

Dan*_*iel 37

好的,在问了问题后,答案突然出现在我的脑海中.

而不是search_form_for帮助器我现在只是form_tag以下列方式使用帮助器:

<%= form_tag search_path, method: :get do %>
  <%= text_field_tag :q, nil %>
<%= end %>
Run Code Online (Sandbox Code Playgroud)

在搜索动作中我只是这样做:

q = params[:q]
@works    = Work.search(name_cont: q).result
@projects = Project.search(name_cont: q).result
@users    = User.search(name_cont: q).result
Run Code Online (Sandbox Code Playgroud)

这适合我.我希望这也有助于其他人.

  • 不错的解决方案 - 感谢分享! (3认同)
  • 到了 2021 年,这仍然是一个出色而简单的解决方案 (2认同)