diff options
author | wycats <wycats@gmail.com> | 2010-06-04 11:49:55 -0700 |
---|---|---|
committer | wycats <wycats@gmail.com> | 2010-06-04 20:11:06 -0700 |
commit | b8af484476d1dda685f058a0f185608cd18a862e (patch) | |
tree | 6603ed9d3c6933e4b0f2b6aae1cdda534ec0cd33 /actionpack | |
parent | ff4c218095687ef9925baaca78d644579831d3c1 (diff) | |
download | rails-b8af484476d1dda685f058a0f185608cd18a862e.tar.gz rails-b8af484476d1dda685f058a0f185608cd18a862e.tar.bz2 rails-b8af484476d1dda685f058a0f185608cd18a862e.zip |
No need to unescape params twice if we came from Rack::Mount
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route_set.rb | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 0d071dd7fe..5c4c96d9fc 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -29,13 +29,6 @@ module ActionDispatch def prepare_params!(params) merge_default_action!(params) split_glob_param!(params) if @glob_param - - params.each do |key, value| - if value.is_a?(String) - value = value.dup.force_encoding(Encoding::BINARY) if value.respond_to?(:force_encoding) - params[key] = URI.unescape(value) - end - end end def controller(params, raise_error=true) @@ -466,6 +459,13 @@ module ActionDispatch req = Rack::Request.new(env) @set.recognize(req) do |route, matches, params| + params.each do |key, value| + if value.is_a?(String) + value = value.dup.force_encoding(Encoding::BINARY) if value.encoding_aware? + params[key] = URI.unescape(value) + end + end + dispatcher = route.app if dispatcher.is_a?(Dispatcher) && dispatcher.controller(params, false) dispatcher.prepare_params!(params) |