diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-12-25 23:01:17 +0000 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-12-25 23:05:34 +0000 |
commit | cd1d6e8768ae13b11bc343701037b20ad35e6f1e (patch) | |
tree | b400f930c3ca31a26c41ab0d30c4283dc17b2d79 /actionpack | |
parent | d67e03871eabb912434dafac3eeb8e6ea7c5585f (diff) | |
download | rails-cd1d6e8768ae13b11bc343701037b20ad35e6f1e.tar.gz rails-cd1d6e8768ae13b11bc343701037b20ad35e6f1e.tar.bz2 rails-cd1d6e8768ae13b11bc343701037b20ad35e6f1e.zip |
Make ActionController#render(string) work as a shortcut for render :action => string. [#1435]
Examples:
# Instead of render(:action => 'other_action')
render('other_action')
Note : Argument must not have any '/'
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG | 9 | ||||
-rw-r--r-- | actionpack/lib/action_controller/base.rb | 4 | ||||
-rw-r--r-- | actionpack/test/controller/render_test.rb | 19 |
3 files changed, 28 insertions, 4 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 6badb412f8..51afa508df 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,13 +1,16 @@ *2.3.0 [Edge]* -* Make ActionController#render(string) work as a shortcut for render :file/:template => string. [#1435] [Pratik Naik] Examples: +* Make ActionController#render(string) work as a shortcut for render :file/:template/:action => string. [#1435] [Pratik Naik] Examples: - # Instead of render(:file => '/Users/lifo/home.html.erb') - render('/Users/lifo/home.html.erb') # argument must begin with a '/' + # Instead of render(:action => 'other_action') + render('other_action') # argument has no '/' # Instead of render(:template => 'controller/action') render('controller/action') # argument must not begin with a '/', but contain a '/' + # Instead of render(:file => '/Users/lifo/home.html.erb') + render('/Users/lifo/home.html.erb') # argument must begin with a '/' + * Add :prompt option to date/time select helpers. #561 [Sam Oliver] * Fixed that send_file shouldn't set an etag #1578 [Hongli Lai] diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index 29f1c84f03..e9c96b0ba4 100644 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -866,9 +866,11 @@ module ActionController #:nodoc: elsif options == :update options = extra_options.merge({ :update => true }) elsif options.is_a?(String) - case position = options.index('/') + case options.index('/') when 0 extra_options[:file] = options + when nil + extra_options[:action] = options else extra_options[:template] = options end diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index ce9756a060..d097cf496f 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -81,6 +81,10 @@ class TestController < ActionController::Base render :action => "hello_world" end + def render_action_hello_world_as_string + render "hello_world" + end + def render_action_hello_world_with_symbol render :action => :hello_world end @@ -296,6 +300,10 @@ class TestController < ActionController::Base render :action => "hello_world", :layout => "standard" end + def layout_test_with_different_layout_and_string_action + render "hello_world", :layout => "standard" + end + def rendering_without_layout render :action => "hello_world", :layout => false end @@ -743,6 +751,12 @@ class RenderTest < ActionController::TestCase assert_template "test/hello_world" end + def test_render_action_hello_world_as_string + get :render_action_hello_world_as_string + assert_equal "Hello world!", @response.body + assert_template "test/hello_world" + end + def test_render_action_with_symbol get :render_action_hello_world_with_symbol assert_template "test/hello_world" @@ -1043,6 +1057,11 @@ class RenderTest < ActionController::TestCase assert_equal "<html>Hello world!</html>", @response.body end + def test_layout_test_with_different_layout + get :layout_test_with_different_layout_and_string_action + assert_equal "<html>Hello world!</html>", @response.body + end + def test_rendering_without_layout get :rendering_without_layout assert_equal "Hello world!", @response.body |