mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Fix Hash#to_query edge case with html_safe string on 1.8 ruby
This commit is contained in:
@@ -7,7 +7,7 @@ class Object
|
||||
# Note: This method is defined as a default implementation for all Objects for Hash#to_query to work.
|
||||
def to_query(key)
|
||||
require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
|
||||
"#{CGI.escape(key.to_s)}=#{CGI.escape(to_param.to_s)}"
|
||||
"#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
require 'abstract_unit'
|
||||
require 'active_support/ordered_hash'
|
||||
require 'active_support/core_ext/object/to_query'
|
||||
require 'active_support/core_ext/string/output_safety.rb'
|
||||
|
||||
class ToQueryTest < Test::Unit::TestCase
|
||||
def test_simple_conversion
|
||||
@@ -11,6 +12,14 @@ class ToQueryTest < Test::Unit::TestCase
|
||||
assert_query_equal 'a%3Ab=c+d', 'a:b' => 'c d'
|
||||
end
|
||||
|
||||
def test_html_safe_parameter_key
|
||||
assert_query_equal 'a%3Ab=c+d', 'a:b'.html_safe => 'c d'
|
||||
end
|
||||
|
||||
def test_html_safe_parameter_value
|
||||
assert_query_equal 'a=%5B10%5D', 'a' => '[10]'.html_safe
|
||||
end
|
||||
|
||||
def test_nil_parameter_value
|
||||
empty = Object.new
|
||||
def empty.to_param; nil end
|
||||
|
||||
Reference in New Issue
Block a user