как сделать два поиска на одной странице с meta_search? - PullRequest
3 голосов
/ 30 декабря 2011

У меня есть два списка на странице, один для model_1 и другой для model_2.Когда я щелкаю ссылку sort_ для столбца meta_search, отправляем параметр "search [meta_sort] = column_name.asc".Проблема в контроллере, потому что две модели фильтруются с одинаковыми параметрами поиска:

#in the controller
@search_for_model_1 = Model1.search(params[:search])
@model_1s = @search_for_model_1.all

@search_for_model_2 = Model2.search(params[:search])
@model_2s = @search_for_model_2.all

#in the view
<%= sort_link @search_for_model_1, :name %>
<%= sort_link @search_for_model_2, :name %>

ссылки sort_ находятся в разных таблицах html, одна показывает поля model_1, а другая - поля model_2, когда я нажимаю влюбая ссылка на имя столбца, параметр, который я получаю в контроллере, это params [: search], я не могу узнать, была ли ссылка на столбец нажата из html-таблицы model_1 или model_2.

Я хочу изменить имя параметра«искать» что-то вроде «search_for_model_name», а затем в контроллере:

#in the controller
@search_for_model_1 = Model1.search(params[:search_for_model_1])
@model_1s = @search_for_model_1.all

@search_for_model_2 = Model2.search(params[:search_for_model_2])
@model_2s = @search_for_model_2.all

Я не смог найти способ изменить имя параметра, используя вспомогательный метод sort_link, предоставляемый meta_search.Или есть другой способ сделать это?

Ответы [ 3 ]

1 голос
/ 15 марта 2012

sort_link использует опцию :as, как и form_for

<%= form_for @search, :as => :q do |f| %>

<%= sort_link @search, :field, :as => :q

@search = Model.metasearch(params[:q])

Сделайте это с разными именами для каждой модели.

0 голосов
/ 22 августа 2014

ответ graywh не работает для sort_link, это правильное решение:

#in the controller
@search_for_model_1 = Model1.search(params[:model_1], :search_key => :model_1)

@search_for_model_2 = Model2.search(params[:model_2], :search_key => :model_2)
0 голосов
/ 30 декабря 2011

Скорее всего, вы просто делаете что-то вроде этого

:search_for_model_2 => :search_field

но я не могу сказать наверняка, не видя вашего взгляда.

...