diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-07-22 08:10:31 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-07-22 08:10:31 -0700 |
commit | 440a5ebd7a72fca1e655e5f4ff98435eddc4750a (patch) | |
tree | 7286d4bc175cde9b655d10125ed8131f1476f131 | |
parent | 1b2a7bad671cf39252dc539a673cd217a25235a8 (diff) | |
parent | dacbcbe55745aa9e5484b10b11f65ccca7db1c54 (diff) | |
download | rails-440a5ebd7a72fca1e655e5f4ff98435eddc4750a.tar.gz rails-440a5ebd7a72fca1e655e5f4ff98435eddc4750a.tar.bz2 rails-440a5ebd7a72fca1e655e5f4ff98435eddc4750a.zip |
Merge pull request #7123 from nashby/data-in-options
don't escape options in option_html_attributes method
-rw-r--r-- | actionpack/lib/action_view/helpers/form_options_helper.rb | 2 | ||||
-rw-r--r-- | actionpack/test/template/form_options_helper_test.rb | 21 |
2 files changed, 15 insertions, 8 deletions
diff --git a/actionpack/lib/action_view/helpers/form_options_helper.rb b/actionpack/lib/action_view/helpers/form_options_helper.rb index 72fbbd109a..c88af0355f 100644 --- a/actionpack/lib/action_view/helpers/form_options_helper.rb +++ b/actionpack/lib/action_view/helpers/form_options_helper.rb @@ -711,7 +711,7 @@ module ActionView def option_html_attributes(element) return {} unless Array === element - Hash[element.select { |e| Hash === e }.reduce({}, :merge).map { |k, v| [k, ERB::Util.html_escape(v.to_s)] }] + Hash[element.select { |e| Hash === e }.reduce({}, :merge).map { |k, v| [k, v] }] end def option_text_and_value(option) diff --git a/actionpack/test/template/form_options_helper_test.rb b/actionpack/test/template/form_options_helper_test.rb index 2322fb0406..96d99367be 100644 --- a/actionpack/test/template/form_options_helper_test.rb +++ b/actionpack/test/template/form_options_helper_test.rb @@ -1130,6 +1130,13 @@ class FormOptionsHelperTest < ActionView::TestCase ) end + def test_options_for_select_with_data_element + assert_dom_equal( + "<option value=\"<Denmark>\" data-test=\"bold\"><Denmark></option>", + options_for_select([ [ "<Denmark>", { :data => { :test => 'bold' } } ] ]) + ) + end + def test_options_for_select_with_element_attributes_and_selection assert_dom_equal( "<option value=\"<Denmark>\"><Denmark></option>\n<option value=\"USA\" class=\"bold\" selected=\"selected\">USA</option>\n<option value=\"Sweden\">Sweden</option>", @@ -1144,6 +1151,13 @@ class FormOptionsHelperTest < ActionView::TestCase ) end + def test_options_for_select_with_special_characters + assert_dom_equal( + "<option value=\"<Denmark>\" onclick=\"alert("<code>")\"><Denmark></option>", + options_for_select([ [ "<Denmark>", { :onclick => %(alert("<code>")) } ] ]) + ) + end + def test_option_html_attributes_from_without_hash assert_equal( {}, @@ -1172,13 +1186,6 @@ class FormOptionsHelperTest < ActionView::TestCase ) end - def test_option_html_attributes_with_special_characters - assert_equal( - {:onclick => "alert("<code>")"}, - option_html_attributes([ 'foo', 'bar', { :onclick => %(alert("<code>")) } ]) - ) - end - def test_grouped_collection_select @post = Post.new @post.origin = 'dk' |