ウェブサービスを作っています。

URI のクエリを書き換える

Addressable::URI を使うと、割ときれいに書ける気がします。忘れるのでメモ。

require 'addressable/uri'

uri = Addressable::URI.parse('http://example.com').normalize

uri.query_values = (uri.query_values or {}).merge('a' => '2')
uri.to_s  # => "http://example.com/?a=2"

uri.query_values = (uri.query_values or {}).merge('b' => '3')
uri.to_s  # => "http://example.com/?a=2&b=3"