aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb27
1 files changed, 14 insertions, 13 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 4c4b99c03e..d196f16600 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -1255,25 +1255,26 @@ module ActionDispatch
options[:anchor] = true unless options.key?(:anchor)
+ if options[:on] && !VALID_ON_OPTIONS.include?(options[:on])
+ raise ArgumentError, "Unknown scope #{on.inspect} given to :on"
+ end
+
paths.each { |path| decomposed_match(path, options.dup) }
self
end
def decomposed_match(path, options) # :nodoc:
- on = options.delete(:on)
- if VALID_ON_OPTIONS.include?(on)
- return send(on){ decomposed_match(path, options) }
- elsif on
- raise ArgumentError, "Unknown scope #{on.inspect} given to :on"
- end
-
- case @scope[:scope_level]
- when :resources
- nested { decomposed_match(path, options) }
- when :resource
- member { decomposed_match(path, options) }
+ if on = options.delete(:on)
+ send(on) { decomposed_match(path, options) }
else
- add_route(path, options)
+ case @scope[:scope_level]
+ when :resources
+ nested { decomposed_match(path, options) }
+ when :resource
+ member { decomposed_match(path, options) }
+ else
+ add_route(path, options)
+ end
end
end