From f3ff7d16d1b7b2f1732e3a6bf4d0a261c428f0c7 Mon Sep 17 00:00:00 2001 From: Peter Marklund Date: Fri, 4 Sep 2009 00:50:14 +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 | 14 ++++++++++++++ 2 files changed, 17 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..6a2b501 100644 --- a/actionpack/test/template/form_options_helper_test.rb +++ b/actionpack/test/template/form_options_helper_test.rb @@ -102,6 +102,20 @@ class FormOptionsHelperTest < ActionView::TestCase ) end + def test_array_options_for_select_with_symbol_selection + assert_dom_equal( + "\n\n", + options_for_select([ "Denmark", "", "Sweden" ], :"") + ) + 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