2013-05-27 76 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