From 540ebe37cd1a9551b739c552a0d4efd2adc7ff22 Mon Sep 17 00:00:00 2001 From: Semyon Perepelitsa Date: Thu, 24 Jan 2013 04:26:49 +0800 Subject: Fix `content_tag_for` with array html option. It would embed array as string instead of joining it like `content_tag` does: content_tag(:td, class: ["foo", "bar"]){} #=> '' Before: content_tag_for(:td, item, class: ["foo", "bar"]){} #=> '' After: content_tag_for(:td, item, class: ["foo", "bar"]){} #=> '' --- actionpack/CHANGELOG.md | 18 ++++++++++++++++++ .../lib/action_view/helpers/record_tag_helper.rb | 2 +- actionpack/test/template/record_tag_helper_test.rb | 6 ++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index a2cf94fb42..82438cb766 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,5 +1,23 @@ ## Rails 4.0.0 (unreleased) ## +* Fix `content_tag_for` with array html option. + It would embed array as string instead of joining it like `content_tag` does: + + content_tag(:td, class: ["foo", "bar"]){} + #=> '' + + Before: + + content_tag_for(:td, item, class: ["foo", "bar"]) + #=> '' + + After: + + content_tag_for(:td, item, class: ["foo", "bar"]) + #=> '' + + *Semyon Perepelitsa* + * Remove `BestStandardsSupport` middleware, !DOCTYPE html already triggers standards mode per http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx and ChromeFrame header has been moved to `config.action_dispatch.default_headers` diff --git a/actionpack/lib/action_view/helpers/record_tag_helper.rb b/actionpack/lib/action_view/helpers/record_tag_helper.rb index 271a194913..f767957fa9 100644 --- a/actionpack/lib/action_view/helpers/record_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/record_tag_helper.rb @@ -92,7 +92,7 @@ module ActionView # for each record. def content_tag_for_single_record(tag_name, record, prefix, options, &block) options = options ? options.dup : {} - options[:class] = "#{dom_class(record, prefix)} #{options[:class]}".rstrip + options[:class] = [ dom_class(record, prefix), options[:class] ].compact options[:id] = dom_id(record, prefix) if block_given? diff --git a/actionpack/test/template/record_tag_helper_test.rb b/actionpack/test/template/record_tag_helper_test.rb index 9c49438f6a..ab84bccb56 100644 --- a/actionpack/test/template/record_tag_helper_test.rb +++ b/actionpack/test/template/record_tag_helper_test.rb @@ -41,6 +41,12 @@ class RecordTagHelperTest < ActionView::TestCase assert_dom_equal expected, actual end + def test_content_tag_for_with_array_css_class + expected = %() + actual = content_tag_for(:tr, @post, class: ["special", "odd"]) + 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: "special", style: "background-color: #f0f0f0") -- cgit v1.2.3