diff options
author | Andrew White <andyw@pixeltrix.co.uk> | 2013-06-25 11:00:19 +0100 |
---|---|---|
committer | Andrew White <andyw@pixeltrix.co.uk> | 2013-06-25 11:00:19 +0100 |
commit | 622e4ab424ea260cd3ebe3768b1a2a4e5ae1384e (patch) | |
tree | 9d4ab215a75059ee9d187cef7ed4bd92fb7ffbd4 /actionpack/lib/action_dispatch | |
parent | ca23e6d4d3e3a14e2e3ec1af46ca2bd2c7d5576c (diff) | |
download | rails-622e4ab424ea260cd3ebe3768b1a2a4e5ae1384e.tar.gz rails-622e4ab424ea260cd3ebe3768b1a2a4e5ae1384e.tar.bz2 rails-622e4ab424ea260cd3ebe3768b1a2a4e5ae1384e.zip |
Fix shorthand routes where controller and action are in the scope
Merge `:action` from routing scope and assign endpoint if both `:controller`
and `:action` are present. The endpoint assignment only occurs if there is
no `:to` present in the options hash so should only affect routes using the
shorthand syntax (i.e. endpoint is inferred from the the path).
Fixes #9856
Backport of 37b4276
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index d71b21efc3..bfa816798d 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -779,6 +779,10 @@ module ActionDispatch child end + def merge_action_scope(parent, child) #:nodoc: + child + end + def merge_path_names_scope(parent, child) #:nodoc: merge_options_scope(parent, child) end @@ -1253,6 +1257,10 @@ module ActionDispatch paths = [path] + rest end + if @scope[:controller] && @scope[:action] + options[:to] ||= "#{@scope[:controller]}##{@scope[:action]}" + 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') |