20

アプリのヘッダーに検索フォームがあり、この検索フォームを使用してアプリケーション内の複数のモデルを検索したいと考えています。

たとえば、 のようなリクエストは、 、、およびそれらの定義済み属性など/search?q=railsの複数のモデルを通じて検索をトリガーする必要があります。アプリの別の領域のモデルで既に使用しているため、Ransack を使用したかったのです。WorkProjectUserWork

@q = MyModel.search(params[:q])私はまだ Ransack をよく理解していないと思います。ドキュメントでは、フォームで使用するには定義する必要があると常に指摘されています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 に答える