我想从Ruby中的URL获取一些数据。我有一个URL匹配:
"http://localhost:3000/cars/test/1/direction/2"
我想在/test
之后提取值(此处为1
)。我知道如何提取其他值。
我创建了一个URI对象:
uri = URI.parse("http://localhost:3000/cars/test/1/direction/2")
uri.port = 3000
uri.path = /cars/test/1/direction/2
uri.host = localhost
但是,我不知道如何提取内部参数。
我是否必须解析此URL或是否存在现有解决方案?
答案 0 :(得分:2)
我认为这可能对您有用,因为它也标识了主要名称:
url_parts = uri.path.scan(/\/(\w+)\/(\d+)/)
#=> [["test","1"],["direction","2"]]
然后你甚至可以使用:{/ p>将其设为Hash
Hash[url_parts]
#=> {"test" => "1", "direction" => "2"}
答案 1 :(得分:0)
快速简便的解决方案是使用split
。
uri = URI.parse("http://localhost:3000/cars/test/1/direction/2")
url_path = uri.path
url_parts = url_path.split("/")
url_parts[3] # => "1"