ruby-on-rails - 如何在 Ruby on Rails 中跨请求保留查询字符串值?

标签 ruby-on-rails query-string

我遇到了与 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/

相关文章:

ruby-on-rails - 如果 gsub 的替换值为 null,我怎么能有默认值?

ruby-on-rails - 在多个 Rails 应用程序之间共享上传的文件

ruby-on-rails - 事件登记表

ruby-on-rails - 在父类中使用派生类的属性

ruby-on-rails - 如何为具有不同登录页面的同一用户使用 Devise 和 ActiveAdmin

javascript - 从 url 中批量删除所有查询字符串?

query-string - asp .net 2.0 上的最大查询字符串长度

php - 维护大型查询字符串的最佳方法是什么?

python - Django:将 POST 请求参数转换为查询字符串

ruby-on-rails - 带句点(或句号)的 Rails 查询字符串。