我在页面中有两个列表,一个用于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来更改param名称的方法。或者有不同的方式来做到这一点?
答案 0 :(得分:1)
sort_link
使用:as
选项,就像form_for
<%= form_for @search, :as => :q do |f| %>
<%= sort_link @search, :field, :as => :q
@search = Model.metasearch(params[:q])
为每个模型使用不同的名称。
答案 1 :(得分:0)
很可能你只是做这样的事情
:search_for_model_2 => :search_field
但如果没有看到你的观点,我无法肯定地说。
答案 2 :(得分: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)