From dd91151bc1ac81c68be2a0079a7756c68da715c2 Mon Sep 17 00:00:00 2001 From: Peter Marklund Date: Fri, 4 Sep 2009 08:01:10 +0200 Subject: [PATCH] Made select options symbol/string indifferent by invoking to_s in the comparison in the option_value_selected? method --- .../lib/action_view/helpers/form_options_helper.rb | 6 ++-- .../test/template/form_options_helper_test.rb | 28 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/actionpack/lib/action_view/helpers/form_options_helper.rb b/actionpack/lib/action_view/helpers/form_options_helper.rb index ec0e3d6..dbee5c1 100644 --- a/actionpack/lib/action_view/helpers/form_options_helper.rb +++ b/actionpack/lib/action_view/helpers/form_options_helper.rb @@ -495,10 +495,10 @@ module ActionView end def option_value_selected?(value, selected) - if selected.respond_to?(:include?) && !selected.is_a?(String) - selected.include? value + if selected.is_a?(Enumerable) + selected.map(&:to_s).include?(value.to_s) else - value == selected + value.to_s == selected.to_s end end diff --git a/actionpack/test/template/form_options_helper_test.rb b/actionpack/test/template/form_options_helper_test.rb index aa40e46..694a728 100644 --- a/actionpack/test/template/form_options_helper_test.rb +++ b/actionpack/test/template/form_options_helper_test.rb @@ -95,6 +95,13 @@ class FormOptionsHelperTest < ActionView::TestCase ) end + def test_array_options_for_select_with_nil_selection + assert_dom_equal( + "\n\n", + options_for_select([ "", "USA", "Sweden" ], nil) + ) + end + def test_array_options_for_select_with_selection assert_dom_equal( "\n\n", @@ -102,6 +109,27 @@ class FormOptionsHelperTest < ActionView::TestCase ) end + def test_nil_array_options_for_select_with_nil_selection + assert_dom_equal( + "\n\n", + options_for_select([ nil, "USA", "Sweden" ], nil) + ) + end + + def test_array_options_for_select_with_symbol_selection + assert_dom_equal( + "\n\n", + options_for_select([ "USA", "US", "Sweden" ], :US) + ) + end + + def test_symbol_array_options_for_select_with_string_selection + assert_dom_equal( + "\n\n", + options_for_select([ :"Denmark", :"", :"Sweden" ], "") + ) + end + def test_array_options_for_select_with_selection_array assert_dom_equal( "\n\n", -- 1.5.6