2013-05-27 59 views
14

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

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

我觉得我还不太了解Ransack,文档总是指出你必须定义@q = MyModel.search(params[:q])才能以search_form_for @q的形式使用它。有没有办法预先定义特定的模型?只需传入参数名称search_form_for :q

回答

32

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

相反,我现在只是用form_tag帮手以下方式search_form_for帮手:

<%= 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 

这对我的作品。我希望这也能帮助别人。

+3

不错的解决方案 - 感谢分享! – scarver2

+1

非常欢迎。 – Daniel