MIc*_*hel 19 ruby ruby-on-rails ruby-on-rails-3
我有一个回调url字符串params[:callback]
,我需要附加一个查询字符串"&result=true"
并重定向用户.我发现这样做的更好方法是使用,addressable
但我认为代码对于这样的任务来说太大了,特别是当我们谈论ruby时:
callback = Addressable::URI.parse(params[:callback])
query = callback.query_values
query[:result] = 'true'
callback.query_values = query
redirect_to callback.to_s
Run Code Online (Sandbox Code Playgroud)
是否有更优雅的方式获得与此片段相同的结果?
Mau*_*ähä 10
我不想对这个主题进行更新,因为任何解决方案都不适合我.
原因是,如果实际的url没有现有的查询值,它似乎会callback.query_values
返回Nil
.
因此,如果你有网址,如:http://www.foo.com
和http://www.foo.com?bar=1
你应该使用下面的代码:
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
Run Code Online (Sandbox Code Playgroud)
干杯.
小智 9
url = params[:callback]
redirect_to url + (url.include?('?') ? '&' : '?') + 'result=true'
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
13219 次 |
最近记录: |