2014-09-30 3 views
-1

У меня есть этот код для отправки запроса на URL, и я хотел бы разместить на URL-адрес двух переменных:Как вставить переменные в URL?

talksList = open('http://yolo.com/?action=cp_list&id=#{variable1}&key=#{variable2}') 

Но когда я вставляю свои переменные, как это, он не работает. Вы можете мне помочь ?

Заранее спасибо.

ответ

0

Это потому, что вы используете строки с одинарными кавычками. В одинарных кавычках ничто не заменяется, кроме \\ и \'.

В частности, интерполяция доступна только в двойных кавычках, попробуйте

talksList = open("http://yolo.com/?action=cp_list&id=#{variable1}&key=#{variable2}") 
+0

Он находится в стадии разработки, но есть другой Проблема: я правильно установил две переменные, но irb говорит, что они не определены. Однако, когда я печатаю их, значение будет правильным. – Vinm

+0

@Vinm Это другая проблема, затем задайте другой вопрос (после некоторых исследований). –

1

Как сказал @YuHao, вы пытаетесь интерполировать переменную в не интерпретированы строки. Но у вас большая долгосрочная проблема.

Не пытайтесь вводить незашифрованные переменные в URL-адрес. Хотя он будет работать, вы рискуете генерировать бессмысленные URL-адреса, которые браузер будет принимать, но код не будет. Вместо этого используйте соответствующие инструменты для изменения URL-адреса, который будет поддерживать соответствующую кодировку для вас.

Вот пример использования URI:

require 'uri' 

variable1 = 'foo' 
variable2 = 'bar' 

uri = URI.parse('http://yolo.com/?action=cp_list') 
params = URI.decode_www_form(uri.query) 
params << ['id', variable1] 
params << ['key', variable2] 
uri.query = URI.encode_www_form(params) 
uri.to_s # => "http://yolo.com/?action=cp_list&id=foo&key=bar" 

Вы можете сделать то же самое, используя Addressable драгоценный камень, который более полнофункциональный:

require 'addressable/uri' 

variable1 = 'foo' 
variable2 = 'bar' 

uri = Addressable::URI.parse('http://yolo.com/?action=cp_list') 
params = uri.query_values 
uri.query_values = params.merge('id' => variable1, 'key' => variable2) 
uri.to_s # => "http://yolo.com/?action=cp_list&id=foo&key=bar" 
Смежные вопросы