【问题标题】:keep meta_search parameters for edit page?保留编辑页面的 meta_search 参数?
【发布时间】:2013-01-04 00:53:52
【问题描述】:
我正在使用 meta_search gem。对于带有搜索参数的管理项目索引页面,我有这样的 url。
admin/projects?utf8=✓&search%5Bid_equals%5D=&search%5Btitle_contains%5D=&search%5Bstage_in%5D=completed
然后用户选择一个项目,url就是这个
admin/projects/a--15/edit?page=1
当用户更新此表单时,搜索参数将丢失。
我怎样才能保留这些参数。我的意思是 session 或 meta_search 有一些方法可以解决这个问题?
【问题讨论】:
标签:
ruby-on-rails
session
meta-search
【解决方案1】:
首先,为每个可能想要访问搜索参数的操作创建一个过滤器:
ProjectsController < ApplicationController
before_filter :save_searches
def save_searches
@addons = ''
[:page, :id_equals,:title_contains,:stage_in].each do |k|
if params[k]
pval = params[k].is_a?(Array) ? params[k].join(',') : params[k]
@addons << k.to_s + "=" + pval + "&"
end
end
@addons.chop!
end
现在,当你的动作触发时,@addons 将被设置,然后你可以这样做:
<%= link_to 'Edit' , edit_path(@project.id) + @addons.length > 0 ? "?" + @addons : '' %>
也就是说,我敢打赌这在某种程度上是一种黑客行为,并且有一种更简洁的方法可以做到这一点。但这对我有用。
:page 键使得如果您正在运行分页并使用 :page 参数跟踪当前页面,您的分页也应该被记住。
另请注意,如果您在参数中获得一个数组(即使用 :multiple=>true 进行选择的结果),则会进行处理。