2015-03-17 3 views
0

Я хотел бы получить некоторые данные из URL-адреса в 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

это за рельсы ? Если это возможно, вы можете использовать params, если бы вы не могли использовать базовое регулярное выражение типа '\/(\ w +) \/(\ d +)', которое используется с 'String # scan', будет' [["test", "1" ], ["direction", "2"]] ' – engineersmnky

+0

Нет, это не так. Я создаю специальный драгоценный камень – dewastator

+0

Добро пожаловать в Stack Overflow. Ваш примерный код недействителен. Очень важно, чтобы он был запущен при обращении за помощью, потому что людям нужно будет использовать его в качестве основы для помощи вам. –

ответ

2

Я думаю, что это может хорошо работать для вас, как он определяет ведущее имя, а также:

url_parts = uri.path.scan(/\/(\w+)\/(\d+)/) 
#=> [["test","1"],["direction","2"]] 

Тогда вы могли бы даже сделать его Hash помощью:

Hash[url_parts] 
#=> {"test" => "1", "direction" => "2"} 
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"