ruby-on-rails ruby search ransack

ruby on rails - Busca mĂșltiples modelos a la vez con Ransack



ruby-on-rails search (1)

Tengo un formulario de búsqueda en el encabezado de mi aplicación y me gustaría usar este formulario de búsqueda para buscar en varios modelos dentro de la aplicación.

Por ejemplo, una solicitud como /search?q=rails debe activar una búsqueda a través de múltiples modelos como Work , Project , User y sus atributos definidos. Quería usar Ransack porque ya lo uso en el modelo de Work en un área diferente de la aplicación.

Creo que aún no entiendo Ransack y la documentación siempre señala que debe definir @q = MyModel.search(params[:q]) para usarlo en el formulario search_form_for @q . ¿Hay alguna forma de no tener que definir un modelo específico de antemano? Y simplemente pase el nombre del parámetro como search_form_for :q ?


Bien, después de hacer la pregunta, la respuesta me vino a la cabeza.

En lugar de search_form_for helper, ahora estoy usando form_tag helper de la siguiente manera:

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

y en la acción de búsqueda acabo de hacer:

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

Esto funciona para mi Espero que esto también ayude a alguien más.