Permalink
Browse files

Get rid of :skip_prefix options in routes

  • Loading branch information...
1 parent b1e5e23 commit 8a077089d9b7aa89cb56ef754b4540f411453375 @drogus drogus committed Jul 8, 2010
@@ -5,20 +5,16 @@ module UrlFor
include ActionDispatch::Routing::UrlFor
def url_options
- 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]
+ options = {}
+ if respond_to?(:env) && env && _routes.equal?(env["action_dispatch.routes"])
+ options[:script_name] = request.script_name
end
- end
super.merge(options).reverse_merge(
:host => request.host_with_port,
:protocol => request.protocol,
:_path_segments => request.symbolized_path_parameters
- ).reverse_merge(:script_name => request.script_name)
+ )
end
def _routes
@@ -452,7 +452,7 @@ def generate(options, recall = {}, extras = false)
Generator.new(options, recall, self, extras).generate
end
- RESERVED_OPTIONS = [:anchor, :params, :only_path, :host, :protocol, :port, :trailing_slash, :script_name, :skip_prefix, :routes]
+ RESERVED_OPTIONS = [:anchor, :params, :only_path, :host, :protocol, :port, :trailing_slash, :script_name, :routes]
def _generate_prefix(options = {})
nil
@@ -478,15 +478,12 @@ def url_for(options)
rewritten_url << ":#{options.delete(:port)}" if options.key?(:port)
end
- path = [options.delete(:script_name)]
- if !options.delete(:skip_prefix)
- path << _generate_prefix(options)
- end
+ script_name = options.delete(:script_name)
+ path = (script_name.blank? ? _generate_prefix(options) : script_name).to_s
path_options = options.except(*RESERVED_OPTIONS)
path_options = yield(path_options) if block_given?
path << generate(path_options, path_segments || {})
- path = path.compact.join ''
# ROUTES TODO: This can be called directly, so script_name should probably be set in the routes
rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path)
@@ -31,7 +31,7 @@ def app
end
test "the request's SCRIPT_NAME takes precedence over the routes'" do
- get "/foo", {}, 'SCRIPT_NAME' => "/new"
+ get "/foo", {}, 'SCRIPT_NAME' => "/new", 'action_dispatch.routes' => Routes
assert_equal "/new/foo", response.body
end

0 comments on commit 8a07708

Please sign in to comment.