タイトルで本文の90%を説明してしまっているシリーズ。
環境
$ ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
挙動
require 'cgi' #=> true # 元のURL base_url = "https://example.net/example" #=> "https://example.net/example" # パラメータとして付与するURL param_url = "https://example.com?key=value" #=> "https://example.com?key=value" # CGI::escapeをするといい感じにしてくれる CGI::escape(param_url) #=> "https%3A%2F%2Fexample.com%3Fkey%3Dvalue" # URLの生成 url = "#{base_url}?url=#{CGI::escape(param_url)}" #=> "https://example.net/example?url=https%3A%2F%2Fexample.com%3Fkey%3Dvalue"
名前的に URI::encode
があるが、こちらは2バイト文字をパーセントエンコーディングするだけなので意図とは違うものになる。(そして今は非推奨なので使わないほうがよい)