Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added url_for usage on render :location, which allows for record iden…

…tification [DHH] (still need to figure out why that test doesnt pass, seems like a test issue)

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6750 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
commit ebee0a742d40f87bb9b78d5d88393c341761cfad 1 parent 4d2b297
@dhh dhh authored
View
6 actionpack/CHANGELOG
@@ -1,5 +1,11 @@
*SVN*
+* Added url_for usage on render :location, which allows for record identification [DHH]. Example:
+
+ render :xml => person, :status => :created, :location => person
+
+ ...expands the location to person_url(person).
+
* Introduce the request.body stream. Lazy-read to parse parameters rather than always setting RAW_POST_DATA. Reduces the memory footprint of large binary PUT requests. [Jeremy Kemper]
* Add some performance enhancements to ActionView.
View
2  actionpack/lib/action_controller/base.rb
@@ -775,7 +775,7 @@ def render(options = nil, deprecated_status = nil, &block) #:doc:
end
if location = options[:location]
- response.headers["Location"] = location
+ response.headers["Location"] = url_for(location)
end
if text = options[:text]
View
20 actionpack/test/controller/new_render_test.rb
@@ -1,6 +1,9 @@
require File.dirname(__FILE__) + '/../abstract_unit'
-silence_warnings { Customer = Struct.new("Customer", :name) }
+silence_warnings { Customer = Struct.new(:name, :id) }
+
+class CustomersController < ActionController::Base
+end
module Fun
class GamesController < ActionController::Base
@@ -261,6 +264,11 @@ def head_with_status_code_first
def render_with_location
render :xml => "<hello/>", :location => "http://example.com", :status => 201
end
+
+ def render_with_object_location
+ customer = Customer.new("Some guy", 1)
+ render :xml => "<customer/>", :location => customer_url(customer), :status => :created
+ end
def render_with_to_xml
to_xmlable = Class.new do
@@ -766,4 +774,14 @@ def test_rendering_xml_should_call_to_xml_if_possible
get :render_with_to_xml
assert_equal "<i-am-xml/>", @response.body
end
+
+ def test_rendering_with_object_location_should_set_header_with_url_for
+ ActionController::Routing::Routes.draw do |map|
+ map.resources :customers
+ map.connect ':controller/:action/:id'
+ end
+
+ get :render_with_object_location
+ assert_equal "http://test.host/customers/1", @response.headers["Location"]
+ end
end
Please sign in to comment.
Something went wrong with that request. Please try again.