diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 5906ab1f1659d..6badb412f8154 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,11 +1,12 @@
*2.3.0 [Edge]*
-* Make ActionController#render(string) work as a shortcut for render :file => string. [#1435] [Pratik Naik] Examples:
+* Make ActionController#render(string) work as a shortcut for render :file/:template => string. [#1435] [Pratik Naik] Examples:
# Instead of render(:file => '/Users/lifo/home.html.erb')
- render('/Users/lifo/home.html.erb')
+ render('/Users/lifo/home.html.erb') # argument must begin with a '/'
- Note : Filename must begin with a forward slash ('/')
+ # Instead of render(:template => 'controller/action')
+ render('controller/action') # argument must not begin with a '/', but contain a '/'
* Add :prompt option to date/time select helpers. #561 [Sam Oliver]
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb
index 9bf044b6c058a..29f1c84f03349 100644
--- a/actionpack/lib/action_controller/base.rb
+++ b/actionpack/lib/action_controller/base.rb
@@ -866,9 +866,11 @@ def render(options = nil, extra_options = {}, &block) #:doc:
elsif options == :update
options = extra_options.merge({ :update => true })
elsif options.is_a?(String)
- case options.index('/')
+ case position = options.index('/')
when 0
extra_options[:file] = options
+ else
+ extra_options[:template] = options
end
options = extra_options
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index f2393e695a8d3..ce9756a060407 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -202,6 +202,11 @@ def render_xml_hello
render :template => "test/hello"
end
+ def render_xml_hello_as_string_template
+ @name = "David"
+ render "test/hello"
+ end
+
def render_xml_with_custom_content_type
render :xml => "
Hello David
\nThis is grand!
\n\n", @response.body + assert_equal "application/xml", @response.content_type + end + def test_render_xml_with_default get :greeting assert_equal "This is grand!
\n", @response.body @@ -1073,6 +1089,11 @@ def test_render_with_explicit_template assert_response :success end + def test_render_with_explicit_string_template + get :render_with_explicit_string_template + assert_equal "Hello world!", @response.body + end + def test_double_render assert_raises(ActionController::DoubleRenderError) { get :double_render } end