diff --git a/actionpack/lib/action_view/helpers/record_tag_helper.rb b/actionpack/lib/action_view/helpers/record_tag_helper.rb index 4cd5fa2ad1b4..1a154594069b 100644 --- a/actionpack/lib/action_view/helpers/record_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/record_tag_helper.rb @@ -83,8 +83,8 @@ def div_for(record, *args, &block) def content_tag_for(tag_name, single_or_multiple_records, prefix = nil, options = nil, &block) options, prefix = prefix, nil if prefix.is_a?(Hash) - Array.wrap(single_or_multiple_records).map do |single_record| - content_tag_for_single_record tag_name, single_record, prefix, options, &block + Array(single_or_multiple_records).map do |single_record| + content_tag_for_single_record(tag_name, single_record, prefix, options, &block) end.join("\n").html_safe end diff --git a/actionpack/test/template/record_tag_helper_test.rb b/actionpack/test/template/record_tag_helper_test.rb index 8a9a15091050..e6ca01548387 100644 --- a/actionpack/test/template/record_tag_helper_test.rb +++ b/actionpack/test/template/record_tag_helper_test.rb @@ -1,6 +1,6 @@ require 'abstract_unit' -class Post +class RecordTagPost extend ActiveModel::Naming include ActiveModel::Conversion attr_accessor :id, :body @@ -20,77 +20,77 @@ class RecordTagHelperTest < ActionView::TestCase def setup super - @post = Post.new + @post = RecordTagPost.new end def test_content_tag_for - expected = %(
  • ) + expected = %(
  • ) actual = content_tag_for(:li, @post) { } assert_dom_equal expected, actual end def test_content_tag_for_prefix - expected = %() + expected = %() actual = content_tag_for(:ul, @post, :archived) { } assert_dom_equal expected, actual end def test_content_tag_for_with_extra_html_options - expected = %() - actual = content_tag_for(:tr, @post, :class => "bar", :style => "background-color: #f0f0f0") { } + expected = %() + actual = content_tag_for(:tr, @post, :class => "special", :style => "background-color: #f0f0f0") { } assert_dom_equal expected, actual end def test_content_tag_for_with_prefix_and_extra_html_options - expected = %() - actual = content_tag_for(:tr, @post, :archived, :class => "bar", :style => "background-color: #f0f0f0") { } + expected = %() + actual = content_tag_for(:tr, @post, :archived, :class => "special", :style => "background-color: #f0f0f0") { } assert_dom_equal expected, actual end def test_block_not_in_erb_multiple_calls - expected = %(
    What a wonderful world!
    ) - actual = div_for(@post, :class => "bar") { @post.body } + expected = %(
    What a wonderful world!
    ) + actual = div_for(@post, :class => "special") { @post.body } assert_dom_equal expected, actual - actual = div_for(@post, :class => "bar") { @post.body } + actual = div_for(@post, :class => "special") { @post.body } assert_dom_equal expected, actual end def test_block_works_with_content_tag_for_in_erb - expected = %(What a wonderful world!) + expected = %(What a wonderful world!) actual = render_erb("<%= content_tag_for(:tr, @post) do %><%= @post.body %><% end %>") assert_dom_equal expected, actual end def test_div_for_in_erb - expected = %(
    What a wonderful world!
    ) - actual = render_erb("<%= div_for(@post, :class => 'bar') do %><%= @post.body %><% end %>") + expected = %(
    What a wonderful world!
    ) + actual = render_erb("<%= div_for(@post, :class => 'special') do %><%= @post.body %><% end %>") assert_dom_equal expected, actual end def test_content_tag_for_collection - post_1 = Post.new { |post| post.id = 101; post.body = "Hello!" } - post_2 = Post.new { |post| post.id = 102; post.body = "World!" } - expected = %(
  • Hello!
  • \n
  • World!
  • ) + post_1 = RecordTagPost.new { |post| post.id = 101; post.body = "Hello!" } + post_2 = RecordTagPost.new { |post| post.id = 102; post.body = "World!" } + expected = %(
  • Hello!
  • \n
  • World!
  • ) actual = content_tag_for(:li, [post_1, post_2]) { |post| post.body } assert_dom_equal expected, actual end def test_div_for_collection - post_1 = Post.new { |post| post.id = 101; post.body = "Hello!" } - post_2 = Post.new { |post| post.id = 102; post.body = "World!" } - expected = %(
    Hello!
    \n
    World!
    ) + post_1 = RecordTagPost.new { |post| post.id = 101; post.body = "Hello!" } + post_2 = RecordTagPost.new { |post| post.id = 102; post.body = "World!" } + expected = %(
    Hello!
    \n
    World!
    ) actual = div_for([post_1, post_2]) { |post| post.body } assert_dom_equal expected, actual end def test_content_tag_for_single_record_is_html_safe - result = div_for(@post, :class => "bar") { @post.body } + result = div_for(@post, :class => "special") { @post.body } assert result.html_safe? end def test_content_tag_for_collection_is_html_safe - post_1 = Post.new { |post| post.id = 101; post.body = "Hello!" } - post_2 = Post.new { |post| post.id = 102; post.body = "World!" } + post_1 = RecordTagPost.new { |post| post.id = 101; post.body = "Hello!" } + post_2 = RecordTagPost.new { |post| post.id = 102; post.body = "World!" } result = content_tag_for(:li, [post_1, post_2]) { |post| post.body } assert result.html_safe? end