From 07f2481e152502050f23834596efc76f4a208fc3 Mon Sep 17 00:00:00 2001 From: Prem Sichanugrist Date: Wed, 8 Jun 2011 01:07:39 -0400 Subject: Adapt [823aa223efbac6ad4d31ea33402892267bb77cb4] to make sure we perform cloning before manipulation only on `OutputBuffer`. After the fragment rendering, `Builder` returns the `String` object instead of `ActionView::OutputBuffer`. Somehow the same procedure which was in [823aa223efbac6ad4d31ea33402892267bb77cb4] does not play nice with the String, and result in the fragment got lost. --- actionpack/lib/action_view/helpers/cache_helper.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'actionpack') diff --git a/actionpack/lib/action_view/helpers/cache_helper.rb b/actionpack/lib/action_view/helpers/cache_helper.rb index d070f14af1..b57617b3d1 100644 --- a/actionpack/lib/action_view/helpers/cache_helper.rb +++ b/actionpack/lib/action_view/helpers/cache_helper.rb @@ -51,9 +51,13 @@ module ActionView # This dance is needed because Builder can't use capture pos = output_buffer.length yield - safe_output_buffer = output_buffer.to_str - fragment = safe_output_buffer.slice!(pos..-1) - self.output_buffer = ActionView::OutputBuffer.new(safe_output_buffer) + if output_buffer.is_a?(ActionView::OutputBuffer) + safe_output_buffer = output_buffer.to_str + fragment = safe_output_buffer.slice!(pos..-1) + self.output_buffer = ActionView::OutputBuffer.new(safe_output_buffer) + else + fragment = output_buffer.slice!(pos..-1) + end controller.write_fragment(name, fragment, options) end end -- cgit v1.2.3