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:
parent
00a194d739
commit
f8f4eccd9a
2 changed files with 34 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue