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.