我遇到了与 Rails 一起工作的那些时刻,当我觉得一定有比我最终得到的更好的方法时。
我有四个查询字符串参数,我想通过 Rails 应用程序的各个部分跨请求保留这些参数 - 不同的 Controller 和 Action ,有些是通过 javascript 呈现的 - 这样用户最终会使用与他们开始时相同的查询字符串参数的 URL。
我发现很难相信最好的方法是通过隐藏的表单字段并手动将参数添加回作为 redirect_to 的一部分,或者为每个使用 session 变量 - 它似乎只是像 un-rails 一样。
有谁知道更好的方法来管理这个?
谢谢!
最佳答案
在这种情况下,我会经常使用辅助函数根据当前参数集创建 url。换句话说,我会这样定义:
def merge_params(p={})
params.merge(p).delete_if{|k,v| v.blank?}
end
然后将它与 url_for 一起使用来为您的表单和链接创建 url。如果您需要修改 和 参数,只需将它们传递到合并中:
# url for the current page
url_for(merge_params)
# url for a different action
url_for(merge_params(:controller => 'bar', :action => 'bar'))
# et cetera
url_for(merge_params(:action => 'pasta', :sauce => 'secret'))
这将保留现有参数以及您合并的任何覆盖。
关于ruby-on-rails - 如何在 Ruby on Rails 中跨请求保留查询字符串值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4201528/