Как сказал @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"
Он находится в стадии разработки, но есть другой Проблема: я правильно установил две переменные, но irb говорит, что они не определены. Однако, когда я печатаю их, значение будет правильным. – Vinm
@Vinm Это другая проблема, затем задайте другой вопрос (после некоторых исследований). –