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

use*_*739 6 ruby parsing uri

如何获得URL的完整路径,如下所示

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

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

我试过uri.path并且返回/发布,ui.query返回'id = 30&limit = 5'

fdi*_*isk 10

你正在寻找的方法是 request_uri

uri.request_uri
=> "/posts?id=30&limit=5"
Run Code Online (Sandbox Code Playgroud)

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

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

[uri.request_uri, uri.fragment].join("#")
=> "/posts?id=30&limit=5#time=1305298413"
Run Code Online (Sandbox Code Playgroud)

  • 我会`[uri.request_uri, uri.fragment].reject(&:blank?).join("#")` 以避免最后出现不需要的#。 (2认同)

tes*_*ssi 6

你可以向URI对象询问它的path, query, 并且fragment像这样:

"#{uri.path}?#{uri.query}##{uri.fragment}"
# => "/posts?id=30&limit=5#time=1305298413"
Run Code Online (Sandbox Code Playgroud)

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

"#{uri.request_uri}##{uri.fragment}"
# => "/posts?id=30&limit=5#time=1305298413"
Run Code Online (Sandbox Code Playgroud)