3

我在一个页面中有两个列表,一个用于 model_1,另一个用于 model_2。当我单击列 meta_search 的 sort_link 时,发送参数“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_links 在不同的 html 表中,一个显示 model_1 字段,另一个显示 model_2 字段,当我单击任何列名链接时,我在控制器中获得的参数是 params [:search],我无法知道是否从 model_1 或 model_2 html 表中单击了列链接。

我想在控制器中将参数名称“search”更改为“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

我找不到使用 meta_search 提供的辅助方法 sort_link 更改参数名称的方法。或者有不同的方式来做到这一点?

4

3 回答 3

1

sort_link使用该:as选项就像form_for

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

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

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

因此,请为每个模型使用不同的名称。

于 2012-03-15T15:18:12.223 回答
0

很可能你只是做这样的事情

:search_for_model_2 => :search_field

但我不能肯定地说没有看到你的观点。

于 2011-12-30T06:30:33.853 回答
0

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)
于 2014-08-22T13:07:50.077 回答