From cadfe4bf452e5ae1f4e54a01709f6eba6eb17dc2 Mon Sep 17 00:00:00 2001 From: Vasiliy Ermolovich Date: Sat, 20 Jul 2013 15:36:27 +0300 Subject: add support for html attributes to grouped_options_for_select --- actionview/CHANGELOG.md | 10 ++++++++++ actionview/lib/action_view/helpers/form_options_helper.rb | 6 +++++- actionview/test/template/form_options_helper_test.rb | 10 ++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'actionview') diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 60ddace7e4..fe8bbde445 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,3 +1,13 @@ +* Element of the `grouped_options_for_select` can + optionally contain html attributes as the last element of the array. + + Example: + grouped_options_for_select( + [["North America", [['United States','US'],"Canada"], :data => { :foo => 'bar' }]] + ) + + *Vasiliy Ermolovich* + * Fix default rendered format problem when calling `render` without :content_type option. It should return :html. Fix #11393. diff --git a/actionview/lib/action_view/helpers/form_options_helper.rb b/actionview/lib/action_view/helpers/form_options_helper.rb index 4e9ef94ff3..8351548f06 100644 --- a/actionview/lib/action_view/helpers/form_options_helper.rb +++ b/actionview/lib/action_view/helpers/form_options_helper.rb @@ -520,12 +520,16 @@ module ActionView end grouped_options.each do |container| + html_attributes = option_html_attributes(container) + if divider label = divider else label, container = container end - body.safe_concat content_tag(:optgroup, options_for_select(container, selected_key), :label => label) + + html_attributes = { :label => label }.merge(html_attributes) + body.safe_concat content_tag(:optgroup, options_for_select(container, selected_key), html_attributes) end body diff --git a/actionview/test/template/form_options_helper_test.rb b/actionview/test/template/form_options_helper_test.rb index 8c90a58a84..3ec138b639 100644 --- a/actionview/test/template/form_options_helper_test.rb +++ b/actionview/test/template/form_options_helper_test.rb @@ -302,6 +302,16 @@ class FormOptionsHelperTest < ActionView::TestCase ) end + def test_grouped_options_for_select_with_array_and_html_attributes + assert_dom_equal( + "\n\n", + grouped_options_for_select([ + ["North America", [['United States','US'],"Canada"], :data => { :foo => 'bar' }], + ["Europe", [["Great Britain","GB"], "Germany"], :disabled => 'disabled'] + ]) + ) + end + def test_grouped_options_for_select_with_optional_divider assert_dom_equal( "\n\n", -- cgit v1.2.3