From 823aa223efbac6ad4d31ea33402892267bb77cb4 Mon Sep 17 00:00:00 2001 From: Christopher Meiklejohn Date: Tue, 7 Jun 2011 22:36:51 -0400 Subject: [PATCH] Fragment caching needs to operate on the pure output, not the safebuffer. --- actionpack/lib/action_view/helpers/cache_helper.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/actionpack/lib/action_view/helpers/cache_helper.rb b/actionpack/lib/action_view/helpers/cache_helper.rb index e81d03b53750f..d070f14af11b9 100644 --- a/actionpack/lib/action_view/helpers/cache_helper.rb +++ b/actionpack/lib/action_view/helpers/cache_helper.rb @@ -51,7 +51,9 @@ def fragment_for(name = {}, options = nil, &block) #:nodoc: # This dance is needed because Builder can't use capture pos = output_buffer.length yield - fragment = output_buffer.slice!(pos..-1) + safe_output_buffer = output_buffer.to_str + fragment = safe_output_buffer.slice!(pos..-1) + self.output_buffer = ActionView::OutputBuffer.new(safe_output_buffer) controller.write_fragment(name, fragment, options) end end