diff options
author | Prathamesh Sonpatki <csonpatki@gmail.com> | 2015-05-11 14:03:09 +0530 |
---|---|---|
committer | Prathamesh Sonpatki <csonpatki@gmail.com> | 2016-01-07 15:50:24 +0530 |
commit | ee1534e5ab51fccb0fe3dbc06fba7ffbe44d070f (patch) | |
tree | 1d6d5f6834f74ea71797ee90459e2a76924d918f /actionpack | |
parent | 8bdbf88dfd231f80b8e757b36e77ff72e6b6b83c (diff) | |
download | rails-ee1534e5ab51fccb0fe3dbc06fba7ffbe44d070f.tar.gz rails-ee1534e5ab51fccb0fe3dbc06fba7ffbe44d070f.tar.bz2 rails-ee1534e5ab51fccb0fe3dbc06fba7ffbe44d070f.zip |
Kept overridden root method and removed original method
- The root method is defined and documented in Base module and
decorated in Resources module.
- The documentation in Base module actually talks about method
signature of decorated method from Resources module.
- Argument handling was moved to decorated method in
https://github.com/rails/rails/commit/977455cc2efb94f40b4c0d46d1842be198ed7c4c
to handle options such as :as with directly passed path parameter.
- To avoid the confusion, removed original root method from Base module
and only kept overridden version in Resources module.
- References - https://github.com/rails/rails/pull/12208 &
https://github.com/rails/rails/pull/12208#issuecomment-24350897.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index 18cd205bad..522012063d 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -387,24 +387,6 @@ module ActionDispatch end module Base - # You can specify what Rails should route "/" to with the root method: - # - # root to: 'pages#main' - # - # For options, see +match+, as +root+ uses it internally. - # - # You can also pass a string which will expand - # - # root 'pages#main' - # - # You should put the root route at the top of <tt>config/routes.rb</tt>, - # because this means it will be matched first. As this is the most popular route - # of most Rails applications, this is beneficial. - def root(options = {}) - name = has_named_route?(:root) ? nil : :root - match '/', { as: name, via: :get }.merge!(options) - end - # Matches a url pattern to one or more routes. # # You should not use the +match+ method in your router @@ -1689,7 +1671,20 @@ to this: @set.add_route(mapping, ast, as, anchor) end - def root(path, options={}) + # You can specify what Rails should route "/" to with the root method: + # + # root to: 'pages#main' + # + # For options, see +match+, as +root+ uses it internally. + # + # You can also pass a string which will expand + # + # root 'pages#main' + # + # You should put the root route at the top of <tt>config/routes.rb</tt>, + # because this means it will be matched first. As this is the most popular route + # of most Rails applications, this is beneficial. + def root(path, options = {}) if path.is_a?(String) options[:to] = path elsif path.is_a?(Hash) and options.empty? @@ -1701,11 +1696,11 @@ to this: if @scope.resources? with_scope_level(:root) do path_scope(parent_resource.path) do - super(options) + match_root_route(options) end end else - super(options) + match_root_route(options) end end @@ -1900,6 +1895,11 @@ to this: ensure @scope = @scope.parent end + + def match_root_route(options) + name = has_named_route?(:root) ? nil : :root + match '/', { :as => name, :via => :get }.merge!(options) + end end # Routing Concerns allow you to declare common routes that can be reused |