【问题标题】:Rails 4: redirect_to :back and change/delete parametersRails 4:redirect_to :back 和更改/删除参数
【发布时间】:2013-12-13 19:00:42
【问题描述】:

我认为这应该很容易,但我一辈子都无法让它发挥作用,或者在网络上找到任何解释它的东西。提交表单后,我想重定向回引用者/引用者并更改或删除一个或多个查询参数。

例如表格在

/tasks/6?foo=1&bar=1

然后我想去

/tasks/6?foo=0&bar=1

我尝试了各种基于

的组合
redirect_to :back, foo: 0

redirect_to :back, params: {foo: 0, bar: 1}

等等,但没有任何东西可以将我重定向到原始页面以外的任何内容。我希望避免自己弄乱字符串,但可能会发生这种情况。

如果还有一种方法可以完全摆脱一个参数,那就太好了,例如重定向到:

/tasks/6?bar=1

谢谢!

【问题讨论】:

    标签: ruby-on-rails redirect ruby-on-rails-4 query-string


    【解决方案1】:

    :back 不接受其他参数。为了完成你想做的事情,你需要使用

    来获取referrer的值
    request.referer
    

    request.env['HTTP_REFERER']
    

    使用URI 库解析它,提取查询并使用Rack::Utils.parse_query 分解它。此时你已经有了 params 的哈希值。

    您可以更新哈希,并构造重定向的 URL。

    【讨论】:

    • 这就是我认为我可能必须做的事情。这种方法与每个表单都有一个隐藏的 redirect-me-here 变量(即在控制器中与表单中定位逻辑)的系统相比有什么优缺点?
    • 带有隐藏重定向我字段的解决方案将存在安全风险:guides.rubyonrails.org/security.html#redirection
    猜你喜欢
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2010-11-28
    • 2015-10-23
    相关资源
    最近更新 更多