使用Ransack一次搜索多个模型

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

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

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

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

而不是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 

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