From 86a571090c43cd00284e563b63a79016acc2f18b Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Tue, 25 Oct 2005 02:15:08 +0000 Subject: Reset template variables after using render_to_string. Closes #2559 git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2723 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/base.rb | 2 ++ actionpack/test/controller/render_test.rb | 9 +++++++++ actionpack/test/fixtures/test/render_to_string_test.rhtml | 1 + 4 files changed, 14 insertions(+) create mode 100644 actionpack/test/fixtures/test/render_to_string_test.rhtml (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 31882ce0dd..028e7e7866 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Reset template variables after using render_to_string [skaes@web.de] + * Expose the session model backing CGI::Session * Abbreviate RAILS_ROOT in traces diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index 067dcacca6..b338904142 100755 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -623,6 +623,8 @@ module ActionController #:nodoc: def render_to_string(options = nil) #:doc: result = render(options) erase_render_results + @variables_added = nil + @template.instance_variable_set("@assigns_added", nil) result end diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb index 9894a70755..fe59035cf4 100644 --- a/actionpack/test/controller/render_test.rb +++ b/actionpack/test/controller/render_test.rb @@ -89,6 +89,10 @@ class TestController < ActionController::Base ActionView::Base.local_assigns_support_string_keys = false end + def render_to_string_test + @foo = render_to_string :inline => "this is a test" + end + def rescue_action(e) raise end private @@ -209,6 +213,11 @@ class RenderTest < Test::Unit::TestCase assert_equal "How's there? goodbyeHello: davidHello: marygoodbye\n", process_request.body end + def test_render_to_string_resets_assigns + @request.action = "render_to_string_test" + assert_equal "The value of foo is: ::this is a test::\n", process_request.body + end + def test_nested_rendering @request.action = "hello_world" assert_equal "Living in a nested world", Fun::GamesController.process(@request, @response).body diff --git a/actionpack/test/fixtures/test/render_to_string_test.rhtml b/actionpack/test/fixtures/test/render_to_string_test.rhtml new file mode 100644 index 0000000000..6e267e8634 --- /dev/null +++ b/actionpack/test/fixtures/test/render_to_string_test.rhtml @@ -0,0 +1 @@ +The value of foo is: ::<%= @foo %>:: -- cgit v1.2.3