diff options
author | Hongli Lai (Phusion) <hongli@phusion.nl> | 2008-12-03 19:30:35 +0100 |
---|---|---|
committer | Hongli Lai (Phusion) <hongli@phusion.nl> | 2008-12-03 19:30:35 +0100 |
commit | ccb96f2297e8783165cba764e9b5d51e1a15ff87 (patch) | |
tree | 3229e6fdddc42054615514d843c555e341003033 /actionpack/lib/action_controller/polymorphic_routes.rb | |
parent | fb2325e35855d62abd2c76ce03feaa3ca7992e4f (diff) | |
parent | 761a633a9c0a45d76ef3ed10da97e3696c3ded79 (diff) | |
download | rails-ccb96f2297e8783165cba764e9b5d51e1a15ff87.tar.gz rails-ccb96f2297e8783165cba764e9b5d51e1a15ff87.tar.bz2 rails-ccb96f2297e8783165cba764e9b5d51e1a15ff87.zip |
Merge commit 'origin/master' into savepoints
Conflicts:
activerecord/lib/active_record/fixtures.rb
activerecord/test/cases/defaults_test.rb
Diffstat (limited to 'actionpack/lib/action_controller/polymorphic_routes.rb')
-rw-r--r-- | actionpack/lib/action_controller/polymorphic_routes.rb | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/actionpack/lib/action_controller/polymorphic_routes.rb b/actionpack/lib/action_controller/polymorphic_routes.rb index cc228c4230..dce50c6c3b 100644 --- a/actionpack/lib/action_controller/polymorphic_routes.rb +++ b/actionpack/lib/action_controller/polymorphic_routes.rb @@ -36,12 +36,11 @@ module ActionController # # * <tt>edit_polymorphic_url</tt>, <tt>edit_polymorphic_path</tt> # * <tt>new_polymorphic_url</tt>, <tt>new_polymorphic_path</tt> - # * <tt>formatted_polymorphic_url</tt>, <tt>formatted_polymorphic_path</tt> # # Example usage: # # edit_polymorphic_path(@post) # => "/posts/1/edit" - # formatted_polymorphic_path([@post, :pdf]) # => "/posts/1.pdf" + # polymorphic_path(@post, :format => :pdf) # => "/posts/1.pdf" module PolymorphicRoutes # Constructs a call to a named RESTful route for the given record and returns the # resulting URL string. For example: @@ -55,7 +54,7 @@ module ActionController # ==== Options # # * <tt>:action</tt> - Specifies the action prefix for the named route: - # <tt>:new</tt>, <tt>:edit</tt>, or <tt>:formatted</tt>. Default is no prefix. + # <tt>:new</tt> or <tt>:edit</tt>. Default is no prefix. # * <tt>:routing_type</tt> - Allowed values are <tt>:path</tt> or <tt>:url</tt>. # Default is <tt>:url</tt>. # @@ -73,13 +72,13 @@ module ActionController # def polymorphic_url(record_or_hash_or_array, options = {}) if record_or_hash_or_array.kind_of?(Array) - record_or_hash_or_array = record_or_hash_or_array.dup + record_or_hash_or_array = record_or_hash_or_array.compact + record_or_hash_or_array = record_or_hash_or_array[0] if record_or_hash_or_array.size == 1 end record = extract_record(record_or_hash_or_array) - format = extract_format(record_or_hash_or_array, options) namespace = extract_namespace(record_or_hash_or_array) - + args = case record_or_hash_or_array when Hash; [ record_or_hash_or_array ] when Array; record_or_hash_or_array.dup @@ -99,11 +98,10 @@ module ActionController end args.delete_if {|arg| arg.is_a?(Symbol) || arg.is_a?(String)} - args << format if format - + named_route = build_named_route_call(record_or_hash_or_array, namespace, inflection, options) - url_options = options.except(:action, :routing_type, :format) + url_options = options.except(:action, :routing_type) unless url_options.empty? args.last.kind_of?(Hash) ? args.last.merge!(url_options) : args << url_options end @@ -118,7 +116,7 @@ module ActionController polymorphic_url(record_or_hash_or_array, options) end - %w(edit new formatted).each do |action| + %w(edit new).each do |action| module_eval <<-EOT, __FILE__, __LINE__ def #{action}_polymorphic_url(record_or_hash, options = {}) polymorphic_url(record_or_hash, options.merge(:action => "#{action}")) @@ -130,9 +128,21 @@ module ActionController EOT end + def formatted_polymorphic_url(record_or_hash, options = {}) + ActiveSupport::Deprecation.warn("formatted_polymorphic_url has been deprecated. Please pass :format to the polymorphic_url method instead", caller) + options[:format] = record_or_hash.pop if Array === record_or_hash + polymorphic_url(record_or_hash, options) + end + + def formatted_polymorphic_path(record_or_hash, options = {}) + ActiveSupport::Deprecation.warn("formatted_polymorphic_path has been deprecated. Please pass :format to the polymorphic_path method instead", caller) + options[:format] = record_or_hash.pop if record_or_hash === Array + polymorphic_url(record_or_hash, options.merge(:routing_type => :path)) + end + private def action_prefix(options) - options[:action] ? "#{options[:action]}_" : options[:format] ? "formatted_" : "" + options[:action] ? "#{options[:action]}_" : '' end def routing_type(options) @@ -170,17 +180,7 @@ module ActionController else record_or_hash_or_array end end - - def extract_format(record_or_hash_or_array, options) - if options[:action].to_s == "formatted" && record_or_hash_or_array.is_a?(Array) - record_or_hash_or_array.pop - elsif options[:format] - options[:format] - else - nil - end - end - + # Remove the first symbols from the array and return the url prefix # implied by those symbols. def extract_namespace(record_or_hash_or_array) |