diff options
| author | Andrew White <andyw@pixeltrix.co.uk> | 2013-04-03 06:48:04 -0700 | 
|---|---|---|
| committer | Andrew White <andyw@pixeltrix.co.uk> | 2013-04-03 06:48:04 -0700 | 
| commit | 148b9ccbb537f99f35374a49aad929aebf8d6ff2 (patch) | |
| tree | 02144c13cf7198b3f0a0c8ba4396ba9fa25ad5dc /actionpack/lib/action_dispatch/routing | |
| parent | a957cb7f378e1c1b6b21e862fed095c6e72745ac (diff) | |
| parent | 69e87f5994f74eef02fdfd7912ae81a334d74218 (diff) | |
| download | rails-148b9ccbb537f99f35374a49aad929aebf8d6ff2.tar.gz rails-148b9ccbb537f99f35374a49aad929aebf8d6ff2.tar.bz2 rails-148b9ccbb537f99f35374a49aad929aebf8d6ff2.zip | |
Merge pull request #9932 from senny/9913_routing_problem
routing bugfixes when matching multiple paths
Diffstat (limited to 'actionpack/lib/action_dispatch/routing')
| -rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 20 | 
1 files changed, 12 insertions, 8 deletions
| diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index 399f6529a7..45d2d3346e 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -589,8 +589,7 @@ module ActionDispatch          private            def map_method(method, args, &block)              options = args.extract_options! -            options[:via]    = method -            options[:path] ||= args.first if args.first.is_a?(String) +            options[:via] = method              match(*args, options, &block)              self            end @@ -1370,18 +1369,23 @@ module ActionDispatch              paths = [path] + rest            end -          path_without_format = path.to_s.sub(/\(\.:format\)$/, '') -          if using_match_shorthand?(path_without_format, options) -            options[:to] ||= path_without_format.gsub(%r{^/}, "").sub(%r{/([^/]*)$}, '#\1') -          end -            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) } +          paths.each do |_path| +            route_options = options.dup +            route_options[:path] ||= _path if _path.is_a?(String) + +            path_without_format = _path.to_s.sub(/\(\.:format\)$/, '') +            if using_match_shorthand?(path_without_format, route_options) +              route_options[:to] ||= path_without_format.gsub(%r{^/}, "").sub(%r{/([^/]*)$}, '#\1') +            end + +            decomposed_match(_path, route_options) +          end            self          end | 
