1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

If a component redirects when called with render_component_as_string, render the

redirected to action.

Fixes #2327


git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2604 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Scott Barron 2005-10-15 02:53:21 +00:00
parent 00a194d739
commit f8f4eccd9a
2 changed files with 34 additions and 3 deletions

View file

@ -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

View file

@ -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