Search multiple models at once with Ransack

 ̄綄美尐妖づ 提交于 2019-12-29 17:45:12

问题


I have a search form in the header of my app and I would like to use this search form to search through multiple models within the application.

For example a request like /search?q=rails should trigger a search through multiple models like Work, Project, User and their defined attributes. I wanted to use Ransack because I already use it on the Work model in a different area of the app.

I think I don't quite understand Ransack yet and the documentation always points out that you have to define @q = MyModel.search(params[:q]) to use it in the form search_form_for @q. Is there a way where you don't have to define a specific model in advance? And just pass in the parameter name like search_form_for :q?


回答1:


Okay, after asking the question the answer popped into my head.

Instead of the search_form_for helper I'm now just using the form_tag helper in the following way:

<%= form_tag search_path, method: :get do %>
  <%= text_field_tag :q, nil %>
<%= end %>

and in the search action I just do:

q = params[:q]
@works    = Work.search(name_cont: q).result
@projects = Project.search(name_cont: q).result
@users    = User.search(name_cont: q).result

This works for me. I hope this also helps someone else.



来源:https://stackoverflow.com/questions/16775207/search-multiple-models-at-once-with-ransack

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!