Ruby URI - 如何在 URL 之后获取完整路径

Ruby URI - How to get entire path after URL

如何获得 URL 的完整路径

uri = URI("http://foo.com/posts?id=30&limit=5#time=1305298413")

我只要posts?id=30&limit=5#time=1305298413

我尝试了 uri.path 和 returns /posts 和 ui.query returns 'id=30&limit=5'

您可以像这样向 URI 对象询问其 pathqueryfragment

"#{uri.path}?#{uri.query}##{uri.fragment}"
# => "/posts?id=30&limit=5#time=1305298413"

或(更简洁,但不那么明确):

"#{uri.request_uri}##{uri.fragment}"
# => "/posts?id=30&limit=5#time=1305298413"

您要找的方法是request_uri

uri.request_uri
=> "/posts?id=30&limit=5"

如果需要,您可以使用任何您想要删除前导的方法。/

编辑:要获取 # 符号后的部分,请使用 fragment:

[uri.request_uri, uri.fragment].join("#")
=> "/posts?id=30&limit=5#time=1305298413"
File.basename("http://foo.com/posts?id=30&limit=5#time=1305298413")
# => "posts?id=30&limit=5#time=1305298413"