20

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

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

我想我还不太了解 Ransack,文档总是指出您必须定义@q = MyModel.search(params[:q])才能以search_form_for @q. 有没有一种方法可以让您不必提前定义特定的模型?只需传入参数名称,例如search_form_for :q

4

1 回答 1

41

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

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

<%= form_tag search_path, method: :get do %>
  <%= text_field_tag :q, params[:q] %>
<%= 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

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

于 2013-05-27T14:28:48.393 回答