从URL中提取数据

时间:2015-03-17 17:12:37

标签: ruby

我想从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或是否存在现有解决方案?

2 个答案:

答案 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"