Если вы пытаетесь сгенерировать строку запроса URL, вам, безусловно, следует использовать метод, подобный to_param activesupport (с псевдонимом to_query).Представьте себе проблемы, если у вас есть амперсанд или знак равенства в самих данных.
to_query заботится о экранировании:
>> require 'active_support/core_ext/object'
>> {'a&' => 'b', 'c' => 'd'}.to_query
>> => "a%26=b&c=d"
РЕДАКТИРОВАТЬ
@fahadsadah говорит о том, что не хочет загружать Rails.Даже active_support / core_ext / object загрузит 71 файл.Он также исправляет основные классы.
Легкое и чистое решение:
require 'rack' # only loads 3 files
{'a&' => 'b', 'c' => 'd'}.map{|pair|
pair.map{|e| Rack::Utils.escape(e.to_s) }.join('=')
}.join('&')
# => "a%26=b&c=d"
Важно избежать, иначе операция необратима.