使用Ransack一次搜索多个模型

时间:2013-05-27 14:20:41

标签: ruby-on-rails ruby search ransack

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

例如,/search?q=rails之类的请求应触发搜索多个模型,例如WorkProjectUser及其定义的属性。我想使用Ransack,因为我已经在应用程序的不同区域的Work模型上使用它。

我认为我还不太了解Ransack,文档总是指出您必须定义@q = MyModel.search(params[:q])search_form_for @q形式使用它。有没有办法让你不必事先定义一个特定的模型?只需传递参数名称,如search_form_for :q

1 个答案:

答案 0 :(得分:36)

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

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

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

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

q = params[:q]
@works    = Work.search(name_cont: q).result
@projects = Project.search(name_cont: q).result
@users    = User.search(name_cont: q).result

这对我有用。我希望这也有助于其他人。