加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在Ruby on Rails中的请求之间保留查询字符

发布时间:2020-12-16 23:27:14 所属栏目:百科 来源:网络整理
导读:当我觉得必须有一个比我最终的更好的方式时,我正在反对使用Rails的那些时刻之一. 我有四个查询字符串参数,我希望通过rails应用程序的各个部分保留不同的请求 – 不同的控制器和操作,一些通过javascript呈现 – 这样用户最终会得到一个具有相同查询字符串参数
当我觉得必须有一个比我最终的更好的方式时,我正在反对使用Rails的那些时刻之一.

我有四个查询字符串参数,我希望通过rails应用程序的各个部分保留不同的请求 – 不同的控制器和操作,一些通过javascript呈现 – 这样用户最终会得到一个具有相同查询字符串参数的URL.

我发现很难相信最好的方法是通过隐藏的表单字段并手动将params作为redirect_to的一部分添加回来,或者使用每个会话变量 – 它似乎就像取消轨道一样.

有谁知道更好的方法来管理这个?

谢谢!

解决方法

在这种情况下,我会经常使用辅助函数根据当前的params集创建url.换句话说,我定义了这个:
def merge_params(p={})
  params.merge(p).delete_if{|k,v| v.blank?}
end

然后将其与url_for一起使用,以创建表单和链接的URL.如果您需要修改params,只需将它们传递给合并:

# 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'))

这将保留现有的参数以及您合并的任何覆盖.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读