aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2012-04-29 22:51:04 +0100
committerAndrew White <andyw@pixeltrix.co.uk>2012-04-29 22:51:04 +0100
commit6cad40762321a1436d9c9c5a2175e832486d4613 (patch)
treee6fb2a5026b949d4b5f86ebbe21fe367e528c20b /actionpack/lib/action_dispatch
parent4075a394530da0c4a88507519f6e6f8b30073cf8 (diff)
downloadrails-6cad40762321a1436d9c9c5a2175e832486d4613.tar.gz
rails-6cad40762321a1436d9c9c5a2175e832486d4613.tar.bz2
rails-6cad40762321a1436d9c9c5a2175e832486d4613.zip
Restore interpolation of path option in redirect routes
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/routing/redirection.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/routing/redirection.rb b/actionpack/lib/action_dispatch/routing/redirection.rb
index 866a2f5602..dc28389360 100644
--- a/actionpack/lib/action_dispatch/routing/redirection.rb
+++ b/actionpack/lib/action_dispatch/routing/redirection.rb
@@ -1,4 +1,5 @@
require 'action_dispatch/http/request'
+require 'active_support/core_ext/uri'
require 'rack/utils'
module ActionDispatch
@@ -47,8 +48,17 @@ module ActionDispatch
:params => request.query_parameters
}.merge options
+ if !params.empty? && url_options[:path].match(/%\{\w*\}/)
+ url_options[:path] = (url_options[:path] % escape_path(params))
+ end
+
ActionDispatch::Http::URL.url_for url_options
end
+
+ private
+ def escape_path(params)
+ Hash[params.map{ |k,v| [k, URI.parser.escape(v)] }]
+ end
end
module Redirection