mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
parent
a1564d470d
commit
3a48b83e5e
4 changed files with 24 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
|||
* Allow an absolute controller path inside a module scope
|
||||
|
||||
Fixes #12777
|
||||
|
||||
* Unique the segment keys array for non-optimized url helpers
|
||||
|
||||
In Rails 3.2 you only needed pass an argument for dynamic segment once so
|
||||
|
|
|
@ -218,8 +218,12 @@ module ActionDispatch
|
|||
controller ||= default_controller
|
||||
action ||= default_action
|
||||
|
||||
unless controller.is_a?(Regexp)
|
||||
controller = [@scope[:module], controller].compact.join("/").presence
|
||||
if @scope[:module] && !controller.is_a?(Regexp)
|
||||
if controller =~ %r{\A/}
|
||||
controller = controller[1..-1]
|
||||
else
|
||||
controller = [@scope[:module], controller].compact.join("/").presence
|
||||
end
|
||||
end
|
||||
|
||||
if controller.is_a?(String) && controller =~ %r{\A/}
|
||||
|
|
|
@ -2882,6 +2882,18 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
|
|||
assert_equal '/downloads/1/1.tar', download_path('1', '1')
|
||||
end
|
||||
|
||||
def test_absolute_controller_namespace
|
||||
draw do
|
||||
namespace :foo do
|
||||
get '/', to: '/bar#index', as: 'root'
|
||||
end
|
||||
end
|
||||
|
||||
get '/foo'
|
||||
assert_equal 'bar#index', @response.body
|
||||
assert_equal '/foo', foo_root_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def draw(&block)
|
||||
|
|
|
@ -239,6 +239,8 @@ In each of these cases, the named routes remain the same as if you did not use `
|
|||
| PATCH/PUT | /admin/posts/:id | posts#update | post_path(:id) |
|
||||
| DELETE | /admin/posts/:id | posts#destroy | post_path(:id) |
|
||||
|
||||
TIP: _If you need to use a different controller namespace inside a `namespace` block you can specify an absolute controller path, e.g: `get '/foo' => '/foo#index'`._
|
||||
|
||||
### Nested Resources
|
||||
|
||||
It's common to have resources that are logically children of other resources. For example, suppose your application includes these models:
|
||||
|
|
Loading…
Reference in a new issue