首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将查询字符串追加到url

将查询字符串追加到url
EN

Stack Overflow用户
提问于 2011-07-03 05:27:02
回答 6查看 16.4K关注 0票数 20

我有一个回调url字符串params[:callback],我需要追加一个查询字符串"&result=true"并重定向用户。我发现做这件事的更好的方法是使用addressable,但是我认为代码对于像这样的任务来说太大了,特别是当我们谈论ruby的时候:

代码语言:javascript
复制
callback = Addressable::URI.parse(params[:callback])
query = callback.query_values
query[:result] = 'true'
callback.query_values = query

redirect_to callback.to_s

有没有一种更优雅的方法来获得与此代码片段相同的结果?

EN

回答 6

Stack Overflow用户

发布于 2014-11-27 16:51:10

我不想更新这个话题,因为任何解决方案都不适用于我。

原因是,如果实际的url没有现有的查询值,那么callback.query_values似乎会返回Nil

因此,如果您有urls,如:http://www.foo.comhttp://www.foo.com?bar=1,则应使用以下代码:

代码语言:javascript
复制
url = "http://www.foo.com" # or params[:callback] obviously. :)

callback = Addressable::URI.parse(url)
callback.query_values = (callback.query_values || {}).merge({
  result: true
})

redirect_to callback.to_s

干杯。

票数 12
EN

Stack Overflow用户

发布于 2011-07-21 01:59:21

代码语言:javascript
复制
callback.query_values = callback.query_values.merge({"result" => "true"})
票数 4
EN

Stack Overflow用户

发布于 2012-02-22 21:55:55

我认为你已经非常接近最优了。你可以删掉一两行代码,但这并不能给你带来任何好处。

代码语言:javascript
复制
callback = Addressable::URI.parse(params[:callback])
callback.query_values = callback.query_values.merge {:results => 'true' }
redirect_to callback.to_s

如果回调总是在您的应用程序内部,那么您可能有其他一些具有不同酷度的选项,但是您没有指定是否是这种情况。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6559708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档