diff options
author | Tom Lea <contrib@tomlea.co.uk> | 2008-08-26 11:08:31 +0100 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2008-08-29 20:52:01 +0200 |
commit | db26b47b9f4dbebd478a5fe6c0dcd38b8697939a (patch) | |
tree | 7312c03896fef70832bb116c0f644bbb222b3c9e | |
parent | d0b949d87375ae351757adffd192d8cb1f3dbf8d (diff) | |
download | rails-db26b47b9f4dbebd478a5fe6c0dcd38b8697939a.tar.gz rails-db26b47b9f4dbebd478a5fe6c0dcd38b8697939a.tar.bz2 rails-db26b47b9f4dbebd478a5fe6c0dcd38b8697939a.zip |
Ensure that calling content_tag_for in a helper doesn't cause duplicate output.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
[#871 state:committed]
-rw-r--r-- | actionpack/lib/action_view/helpers/record_tag_helper.rb | 6 | ||||
-rw-r--r-- | actionpack/test/template/record_tag_helper_test.rb | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/actionpack/lib/action_view/helpers/record_tag_helper.rb b/actionpack/lib/action_view/helpers/record_tag_helper.rb index 9bb235175e..0cdb70e217 100644 --- a/actionpack/lib/action_view/helpers/record_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/record_tag_helper.rb @@ -49,9 +49,9 @@ module ActionView # def content_tag_for(tag_name, record, *args, &block) prefix = args.first.is_a?(Hash) ? nil : args.shift - options = args.first.is_a?(Hash) ? args.shift : {} - concat content_tag(tag_name, capture(&block), - options.merge({ :class => "#{dom_class(record)} #{options[:class]}".strip, :id => dom_id(record, prefix) })) + options = args.extract_options! + options.merge!({ :class => "#{dom_class(record)} #{options[:class]}".strip, :id => dom_id(record, prefix) }) + content_tag(tag_name, options, &block) end end end diff --git a/actionpack/test/template/record_tag_helper_test.rb b/actionpack/test/template/record_tag_helper_test.rb index 34a200b933..67aa047745 100644 --- a/actionpack/test/template/record_tag_helper_test.rb +++ b/actionpack/test/template/record_tag_helper_test.rb @@ -34,6 +34,14 @@ class RecordTagHelperTest < ActionView::TestCase assert_dom_equal expected, actual end + def test_block_not_in_erb_multiple_calls + expected = %(<div class="post bar" id="post_45">#{@post.body}</div>) + actual = div_for(@post, :class => "bar") { @post.body } + assert_dom_equal expected, actual + actual = div_for(@post, :class => "bar") { @post.body } + assert_dom_equal expected, actual + end + def test_block_works_with_content_tag_for_in_erb __in_erb_template = '' expected = %(<tr class="post" id="post_45">#{@post.body}</tr>) |