diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-27 08:38:55 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2007-06-27 08:38:55 +0000 |
commit | 557e19346ad144deecd7d76a8a4e4cec22a6597e (patch) | |
tree | 7fd3817020f4ba93d406c824ad595f646fd6b88a /actionpack/lib/action_controller | |
parent | b5b16a80a9e0386781b370cf110fdc26e13dbc61 (diff) | |
download | rails-557e19346ad144deecd7d76a8a4e4cec22a6597e.tar.gz rails-557e19346ad144deecd7d76a8a4e4cec22a6597e.tar.bz2 rails-557e19346ad144deecd7d76a8a4e4cec22a6597e.zip |
Prefix nested resource named routes with their action name, e.g. new_group_user_path(@group) instead of group_new_user_path(@group). The old nested action named route is deprecated in Rails 1.2.4. Closes #8558.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7138 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r-- | actionpack/lib/action_controller/resources.rb | 21 | ||||
-rw-r--r-- | actionpack/lib/action_controller/routing.rb | 22 |
2 files changed, 33 insertions, 10 deletions
diff --git a/actionpack/lib/action_controller/resources.rb b/actionpack/lib/action_controller/resources.rb index d6c83dabcb..1cfb7c11d0 100644 --- a/actionpack/lib/action_controller/resources.rb +++ b/actionpack/lib/action_controller/resources.rb @@ -426,8 +426,10 @@ module ActionController resource.collection_methods.each do |method, actions| actions.each do |action| action_options = action_options_for(action, resource, method) - map.named_route("#{resource.name_prefix}#{action}_#{resource.plural}", "#{resource.path}/#{action}", action_options) - map.named_route("formatted_#{resource.name_prefix}#{action}_#{resource.plural}", "#{resource.path}/#{action}.:format", action_options) + + # See http://dev.rubyonrails.org/ticket/8251 + map.deprecated_named_route("#{action}_#{resource.name_prefix}#{resource.plural}", "#{resource.name_prefix}#{action}_#{resource.plural}", "#{resource.path}/#{action}", action_options) + map.deprecated_named_route("formatted_#{action}_#{resource.name_prefix}#{resource.plural}", "formatted_#{resource.name_prefix}#{action}_#{resource.plural}", "#{resource.path}/#{action}.:format", action_options) end end end @@ -453,11 +455,13 @@ module ActionController actions.each do |action| action_options = action_options_for(action, resource, method) if action == :new - map.named_route("#{resource.name_prefix}new_#{resource.singular}", resource.new_path, action_options) - map.named_route("formatted_#{resource.name_prefix}new_#{resource.singular}", "#{resource.new_path}.:format", action_options) + # See http://dev.rubyonrails.org/ticket/8251 + map.deprecated_named_route("new_#{resource.name_prefix}#{resource.singular}", "#{resource.name_prefix}new_#{resource.singular}", resource.new_path, action_options) + map.deprecated_named_route("formatted_new_#{resource.name_prefix}#{resource.singular}", "formatted_#{resource.name_prefix}new_#{resource.singular}", "#{resource.new_path}.:format", action_options) else - map.named_route("#{resource.name_prefix}#{action}_new_#{resource.singular}", "#{resource.new_path}/#{action}", action_options) - map.named_route("formatted_#{resource.name_prefix}#{action}_new_#{resource.singular}", "#{resource.new_path}/#{action}.:format", action_options) + # See http://dev.rubyonrails.org/ticket/8251 + map.deprecated_named_route("#{action}_new_#{resource.name_prefix}#{resource.singular}", "#{resource.name_prefix}#{action}_new_#{resource.singular}", "#{resource.new_path}/#{action}", action_options) + map.deprecated_named_route("formatted_#{action}_new_#{resource.name_prefix}#{resource.singular}", "formatted_#{resource.name_prefix}#{action}_new_#{resource.singular}", "#{resource.new_path}/#{action}.:format", action_options) end end end @@ -467,8 +471,9 @@ module ActionController resource.member_methods.each do |method, actions| actions.each do |action| action_options = action_options_for(action, resource, method) - map.named_route("#{resource.name_prefix}#{action}_#{resource.singular}", "#{resource.member_path}/#{action}", action_options) - map.named_route("formatted_#{resource.name_prefix}#{action}_#{resource.singular}", "#{resource.member_path}/#{action}.:format",action_options) + # See http://dev.rubyonrails.org/ticket/8251 + map.deprecated_named_route("#{action}_#{resource.name_prefix}#{resource.singular}", "#{resource.name_prefix}#{action}_#{resource.singular}", "#{resource.member_path}/#{action}", action_options) + map.deprecated_named_route("formatted_#{action}_#{resource.name_prefix}#{resource.singular}", "formatted_#{resource.name_prefix}#{action}_#{resource.singular}", "#{resource.member_path}/#{action}.:format",action_options) end end diff --git a/actionpack/lib/action_controller/routing.rb b/actionpack/lib/action_controller/routing.rb index 74f09f815c..f50c085a53 100644 --- a/actionpack/lib/action_controller/routing.rb +++ b/actionpack/lib/action_controller/routing.rb @@ -1020,6 +1020,11 @@ module ActionController @set.add_named_route(name, path, options) end + def deprecated_named_route(name, deprecated_name, path, options = {}) + named_route(name, path, options) + @set.add_deprecated_named_route(name, deprecated_name, path, options) unless deprecated_name == name + end + # Enables the use of resources in a module by setting the name_prefix, path_prefix, and namespace for the model. # Example: # @@ -1052,7 +1057,7 @@ module ActionController class NamedRouteCollection #:nodoc: include Enumerable - attr_reader :routes, :helpers + attr_reader :routes, :helpers, :deprecated_named_routes def initialize clear! @@ -1061,6 +1066,7 @@ module ActionController def clear! @routes = {} @helpers = [] + @deprecated_named_routes = {} @module ||= Module.new @module.instance_methods.each do |selector| @@ -1074,6 +1080,12 @@ module ActionController end def get(name) + if @deprecated_named_routes.has_key?(name.to_sym) + ActiveSupport::Deprecation.warn( + "The named route \"#{name}\" uses a format that has been deprecated. " + + "You should use \"#{@deprecated_named_routes[name]}\" instead", caller + ) + end routes[name.to_sym] end @@ -1169,7 +1181,7 @@ module ActionController self.routes = [] self.named_routes = NamedRouteCollection.new end - + # Subclasses and plugins may override this method to specify a different # RouteBuilder instance, so that other route DSL's can be created. def builder @@ -1222,10 +1234,16 @@ module ActionController end def add_named_route(name, path, options = {}) + # TODO - is options EVER used? name = options[:name_prefix] + name.to_s if options[:name_prefix] named_routes[name.to_sym] = add_route(path, options) end + def add_deprecated_named_route(name, deprecated_name, path, options = {}) + add_named_route(deprecated_name, path, options) + named_routes.deprecated_named_routes[deprecated_name.to_sym] = name + end + def options_as_params(options) # If an explicit :controller was given, always make :action explicit # too, so that action expiry works as expected for things like |