aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-08-13 19:13:58 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-08-13 19:13:58 -0700
commit0127f02826fec6641c21779c4109a1d2ccb700fe (patch)
tree4d1c95b20545abe6d2dbb32c8b3ea1121db59a32 /actionpack/lib/action_dispatch/routing
parent91608dc342237372548ccbe403ef06c56c2755f2 (diff)
downloadrails-0127f02826fec6641c21779c4109a1d2ccb700fe.tar.gz
rails-0127f02826fec6641c21779c4109a1d2ccb700fe.tar.bz2
rails-0127f02826fec6641c21779c4109a1d2ccb700fe.zip
only look up scope level once
avoid hash lookups and remove depency on the instance
Diffstat (limited to 'actionpack/lib/action_dispatch/routing')
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb13
1 files changed, 7 insertions, 6 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 37f781a7dd..2f03e22be3 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -1726,20 +1726,21 @@ module ActionDispatch
path || @scope[:path_names][name] || name.to_s
end
- def prefix_name_for_action(as, action) #:nodoc:
+ def prefix_name_for_action(as, action, scope_level) #:nodoc:
if as
prefix = as
- elsif !canonical_action?(action, @scope[:scope_level])
+ elsif !canonical_action?(action, scope_level)
prefix = action
end
- if prefix
+ if prefix && prefix != '/' && !prefix.empty?
Mapper.normalize_name prefix.to_s.tr('-', '_')
end
end
def name_for_action(as, action) #:nodoc:
- prefix = prefix_name_for_action(as, action)
+ scope_level = @scope[:scope_level]
+ prefix = prefix_name_for_action(as, action, scope_level)
name_prefix = @scope[:as]
if parent_resource
@@ -1749,7 +1750,7 @@ module ActionDispatch
member_name = parent_resource.member_name
end
- name = case @scope[:scope_level]
+ name = case scope_level
when :nested
[name_prefix, prefix]
when :collection
@@ -1764,7 +1765,7 @@ module ActionDispatch
[name_prefix, member_name, prefix]
end
- if candidate = name.select(&:present?).join("_").presence
+ if candidate = name.compact.join("_").presence
# If a name was not explicitly given, we check if it is valid
# and return nil in case it isn't. Otherwise, we pass the invalid name
# forward so the underlying router engine treats it and raises an exception.