From bf0b7588ee4e32353e0dc10c2d1c3d2b9ea952c4 Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Thu, 14 Jul 2005 10:32:37 +0000 Subject: Add RouteSet#named_route so that RouteSet instance methods do not shadow available route names git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1834 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_controller/routing.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'actionpack/lib/action_controller') diff --git a/actionpack/lib/action_controller/routing.rb b/actionpack/lib/action_controller/routing.rb index fd9904a20e..82b12f3a7b 100644 --- a/actionpack/lib/action_controller/routing.rb +++ b/actionpack/lib/action_controller/routing.rb @@ -573,13 +573,21 @@ module ActionController def each(&block) @routes.each(&block) end - def method_missing(name, *args) - return super(name, *args) unless (1..2).include?(args.length) - - route = connect(*args) + # Defines a new named route with the provided name and arguments. + # This method need only be used when you wish to use a name that a RouteSet instance + # method exists for, such as categories. + # + # For example, map.categories '/categories', :controller => 'categories' will not work + # due to RouteSet#categories. + def named_route(name, path, hash = {}) + route = connect(path, hash) NamedRoutes.name_route(route, name) route end + + def method_missing(name, *args) + (1..2).include?(args.length) ? named_route(name, *args) : super(name, *args) + end def extra_keys(options, recall = {}) generate(options.dup, recall).last.keys -- cgit v1.2.3