diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/components.rb | 9 | ||||
-rw-r--r-- | actionpack/test/controller/components_test.rb | 28 |
2 files changed, 34 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/components.rb b/actionpack/lib/action_controller/components.rb index 409998525d..312595c21f 100644 --- a/actionpack/lib/action_controller/components.rb +++ b/actionpack/lib/action_controller/components.rb @@ -38,7 +38,14 @@ module ActionController #:nodoc: # Returns the component response as a string def render_component_as_string(options) #:doc: - component_logging(options) { component_response(options, false).body } + component_logging(options) do + response = component_response(options, false) + unless response.redirected_to.nil? + render_component_as_string response.redirected_to + else + response.body + end + end end private diff --git a/actionpack/test/controller/components_test.rb b/actionpack/test/controller/components_test.rb index b1aa80304c..de7e8f7260 100644 --- a/actionpack/test/controller/components_test.rb +++ b/actionpack/test/controller/components_test.rb @@ -26,11 +26,19 @@ class CallerController < ActionController::Base end def set_flash - render_component(:controller => 'callee', :action => 'set_flash') + render_component(:controller => "callee", :action => "set_flash") end def use_flash - render_component(:controller => 'callee', :action => 'use_flash') + render_component(:controller => "callee", :action => "use_flash") + end + + def calling_redirected + render_component(:controller => "callee", :action => "redirected") + end + + def calling_redirected_as_string + render_template "<%= render_component(:controller => 'callee', :action => 'redirected') %>" end def rescue_action(e) raise end @@ -53,6 +61,10 @@ class CalleeController < ActionController::Base def use_flash render :text => flash[:notice] || 'no flash' end + + def redirected + redirect_to :controller => "callee", :action => "being_called" + end def rescue_action(e) raise end end @@ -97,4 +109,16 @@ class ComponentsTest < Test::Unit::TestCase get :use_flash assert_equal 'no flash', @response.body end + + def test_component_redirect_redirects + get :calling_redirected + + assert_redirected_to :action => "being_called" + end + + def test_component_as_string_redirect_renders_redirecte_action + get :calling_redirected_as_string + + assert_equal "Lady of the House, speaking", @response.body + end end
\ No newline at end of file |