mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
skip dealing with params if none are provided
This lets us avoid 1. A slow call to Hash#slice 2. An is_a? test 3. Extra hash allocations (from slice) 4. String allocations etc.
This commit is contained in:
parent
73a7b52f01
commit
dbb0bd8f3a
1 changed files with 11 additions and 4 deletions
|
@ -33,10 +33,8 @@ module ActionDispatch
|
|||
path = options[:script_name].to_s.chomp("/")
|
||||
path << options[:path].to_s
|
||||
|
||||
params = options[:params].is_a?(Hash) ? options[:params] : options.slice(:params)
|
||||
params.reject! { |_,v| v.to_param.nil? }
|
||||
|
||||
result = build_host_url(options)
|
||||
|
||||
if options[:trailing_slash]
|
||||
if path.include?('?')
|
||||
result << path.sub(/\?/, '/\&')
|
||||
|
@ -46,7 +44,16 @@ module ActionDispatch
|
|||
else
|
||||
result << path
|
||||
end
|
||||
result << "?#{params.to_query}" unless params.empty?
|
||||
|
||||
if options.key? :params
|
||||
params = options[:params].is_a?(Hash) ?
|
||||
options[:params] :
|
||||
{ params: options[:params] }
|
||||
|
||||
params.reject! { |_,v| v.to_param.nil? }
|
||||
result << "?#{params.to_query}" unless params.empty?
|
||||
end
|
||||
|
||||
result << "##{Journey::Router::Utils.escape_fragment(options[:anchor].to_param.to_s)}" if options[:anchor]
|
||||
result
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue