aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSemyon Perepelitsa <sema@sema.in>2013-01-24 04:26:49 +0800
committerSemyon Perepelitsa <sema@sema.in>2013-01-31 01:28:57 +0800
commit540ebe37cd1a9551b739c552a0d4efd2adc7ff22 (patch)
tree083ed8c399ec6791f907698fa0aa5c3398505834
parentaa202965603fb8511bdd2448677d19dfb7afa87f (diff)
downloadrails-540ebe37cd1a9551b739c552a0d4efd2adc7ff22.tar.gz
rails-540ebe37cd1a9551b739c552a0d4efd2adc7ff22.tar.bz2
rails-540ebe37cd1a9551b739c552a0d4efd2adc7ff22.zip
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"]){} #=> '<td class="foo bar"></td>' Before: content_tag_for(:td, item, class: ["foo", "bar"]){} #=> '<td class="item [&quot;foo&quot;, &quot;bar&quot;]" id="item_1"></td>' After: content_tag_for(:td, item, class: ["foo", "bar"]){} #=> '<td class="item foo bar" id="item_1"></td>'
-rw-r--r--actionpack/CHANGELOG.md18
-rw-r--r--actionpack/lib/action_view/helpers/record_tag_helper.rb2
-rw-r--r--actionpack/test/template/record_tag_helper_test.rb6
3 files changed, 25 insertions, 1 deletions
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"]){}
+ #=> '<td class="foo bar"></td>'
+
+ Before:
+
+ content_tag_for(:td, item, class: ["foo", "bar"])
+ #=> '<td class="item [&quot;foo&quot;, &quot;bar&quot;]" id="item_1"></td>'
+
+ After:
+
+ content_tag_for(:td, item, class: ["foo", "bar"])
+ #=> '<td class="item foo bar" id="item_1"></td>'
+
+ *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 = %(<tr class="record_tag_post special odd" id="record_tag_post_45"></tr>)
+ 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 = %(<tr class="archived_record_tag_post special" id="archived_record_tag_post_45" style='background-color: #f0f0f0'></tr>)
actual = content_tag_for(:tr, @post, :archived, class: "special", style: "background-color: #f0f0f0")