diff options
author | Prem Sichanugrist <s@sikachu.com> | 2011-06-10 18:22:42 -0400 |
---|---|---|
committer | Prem Sichanugrist <s@sikachu.com> | 2011-06-10 18:51:48 -0400 |
commit | 115e80dccc65c3ed9a9750649d9ca4ea2a7e64f1 (patch) | |
tree | ed8e49d65afd73d5dd338cb62efbb9dedf70c9bc | |
parent | 37577988561e97e7ea154a7f90bfd8fe3db9426d (diff) | |
download | rails-115e80dccc65c3ed9a9750649d9ca4ea2a7e64f1.tar.gz rails-115e80dccc65c3ed9a9750649d9ca4ea2a7e64f1.tar.bz2 rails-115e80dccc65c3ed9a9750649d9ca4ea2a7e64f1.zip |
Make sure that we don't perform in-place mutation on SafeBuffer string
This will make sure `render :inline` is working.
Closes #1633
-rw-r--r-- | actionpack/lib/action_view/template.rb | 3 | ||||
-rw-r--r-- | actionpack/test/template/template_test.rb | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/template.rb b/actionpack/lib/action_view/template.rb index 10797c010f..9c59d18310 100644 --- a/actionpack/lib/action_view/template.rb +++ b/actionpack/lib/action_view/template.rb @@ -218,6 +218,9 @@ module ActionView method_name = self.method_name if source.encoding_aware? + # Avoid performing in-place mutation for SafeBuffer + @source = source.to_str if source.html_safe? + # Look for # encoding: *. If we find one, we'll encode the # String in that encoding, otherwise, we'll use the # default external encoding. diff --git a/actionpack/test/template/template_test.rb b/actionpack/test/template/template_test.rb index b0ca7de0b6..2beb168a9d 100644 --- a/actionpack/test/template/template_test.rb +++ b/actionpack/test/template/template_test.rb @@ -172,5 +172,10 @@ class TestERBTemplate < ActiveSupport::TestCase ensure silence_warnings { Encoding.default_external = old } end + + def test_render_inline_safebuffer_should_not_raise_error + @template = new_template("Hello".html_safe) + render + end end end |