aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal/url_for.rb
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2010-07-08 15:42:40 +0200
committerPiotr Sarnacki <drogus@gmail.com>2010-09-03 22:59:05 +0200
commiteedbf87d15b99a7cae38b0d8894fc39f1e70a81e (patch)
tree97fe871d6c640c6b83e7956396cd60b0c42b1d67 /actionpack/lib/action_controller/metal/url_for.rb
parent177a4bd5b7f903030a100f9b5092b1fa62c7c748 (diff)
downloadrails-eedbf87d15b99a7cae38b0d8894fc39f1e70a81e.tar.gz
rails-eedbf87d15b99a7cae38b0d8894fc39f1e70a81e.tar.bz2
rails-eedbf87d15b99a7cae38b0d8894fc39f1e70a81e.zip
New way of generating urls for Application from Engine.
It's based specifying application's script_name with: Rails.application.default_url_options = {:script_name => "/foo"} default_url_options method is delegated to routes. If router used to generate url differs from the router passed via env it always overwrites :script_name with this value.
Diffstat (limited to 'actionpack/lib/action_controller/metal/url_for.rb')
-rw-r--r--actionpack/lib/action_controller/metal/url_for.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/metal/url_for.rb b/actionpack/lib/action_controller/metal/url_for.rb
index a51fc5b8e4..ca91e1f362 100644
--- a/actionpack/lib/action_controller/metal/url_for.rb
+++ b/actionpack/lib/action_controller/metal/url_for.rb
@@ -5,11 +5,20 @@ module ActionController
include ActionDispatch::Routing::UrlFor
def url_options
- super.reverse_merge(
+ options = {}
+ if respond_to?(:env) && env
+ if _routes.equal?(env["action_dispatch.routes"])
+ options[:skip_prefix] = true
+ elsif env["action_dispatch.routes"]
+ options[:script_name] = _routes.default_url_options[:script_name]
+ end
+ end
+
+ super.merge(options).reverse_merge(
:host => request.host_with_port,
:protocol => request.protocol,
:_path_segments => request.symbolized_path_parameters
- ).merge(:script_name => request.script_name)
+ ).reverse_merge(:script_name => request.script_name)
end
def _routes