diff options
author | Semyon Perepelitsa <sema@sema.in> | 2013-01-24 04:26:49 +0800 |
---|---|---|
committer | Semyon Perepelitsa <sema@sema.in> | 2013-01-31 01:28:57 +0800 |
commit | 540ebe37cd1a9551b739c552a0d4efd2adc7ff22 (patch) | |
tree | 083ed8c399ec6791f907698fa0aa5c3398505834 /actionpack | |
parent | aa202965603fb8511bdd2448677d19dfb7afa87f (diff) | |
download | rails-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 ["foo", "bar"]" id="item_1"></td>'
After:
content_tag_for(:td, item, class: ["foo", "bar"]){}
#=> '<td class="item foo bar" id="item_1"></td>'
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG.md | 18 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/record_tag_helper.rb | 2 | ||||
-rw-r--r-- | actionpack/test/template/record_tag_helper_test.rb | 6 |
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 ["foo", "bar"]" 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") |