diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2008-11-30 20:06:41 -0600 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2008-11-30 20:06:41 -0600 |
commit | 119a41e21ddfe220d1d6e92102b65141a0e2299d (patch) | |
tree | 836dd10b18b0a727d75ffd999dd8533b80716a0f /actionpack/lib/action_controller | |
parent | 3b3c0507e2f67a0f64dc04b396c1d13411ab5890 (diff) | |
parent | eb5e6fe713756b36ee6df9b04f28cfb8bae60dbc (diff) | |
download | rails-119a41e21ddfe220d1d6e92102b65141a0e2299d.tar.gz rails-119a41e21ddfe220d1d6e92102b65141a0e2299d.tar.bz2 rails-119a41e21ddfe220d1d6e92102b65141a0e2299d.zip |
Merge branch 'master' of git@github.com:rails/rails
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r-- | actionpack/lib/action_controller/polymorphic_routes.rb | 41 | ||||
-rwxr-xr-x | actionpack/lib/action_controller/request.rb | 10 |
2 files changed, 24 insertions, 27 deletions
diff --git a/actionpack/lib/action_controller/polymorphic_routes.rb b/actionpack/lib/action_controller/polymorphic_routes.rb index 28722c93ca..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>. # @@ -78,9 +77,8 @@ module ActionController 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 @@ -100,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 @@ -119,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}")) @@ -131,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) @@ -171,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) diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb index c079895683..baa955cb04 100755 --- a/actionpack/lib/action_controller/request.rb +++ b/actionpack/lib/action_controller/request.rb @@ -209,7 +209,7 @@ module ActionController # delimited list in the case of multiple chained proxies; the last # address which is not trusted is the originating IP. def remote_ip - remote_addr_list = @env['REMOTE_ADDR'] && @env['REMOTE_ADDR'].split(',').collect(&:strip) + remote_addr_list = @env['REMOTE_ADDR'] && @env['REMOTE_ADDR'].scan(/[^,\s]+/) unless remote_addr_list.blank? not_trusted_addrs = remote_addr_list.reject {|addr| addr =~ TRUSTED_PROXIES} @@ -369,11 +369,9 @@ EOM # Returns the interpreted \path to requested resource after all the installation # directory of this application was taken into account. def path - path = (uri = request_uri) ? uri.split('?').first.to_s : '' - - # Cut off the path to the installation directory if given - path.sub!(%r/^#{ActionController::Base.relative_url_root}/, '') - path || '' + path = request_uri.to_s[/\A[^\?]*/] + path.sub!(/\A#{ActionController::Base.relative_url_root}/, '') + path end memoize :path |