From decff3f43e5549cbc8b89f974460de3d71407042 Mon Sep 17 00:00:00 2001 From: Vasiliy Ermolovich Date: Mon, 20 Feb 2012 22:55:46 +0300 Subject: refactor options_for_select --- actionpack/lib/action_view/helpers/form_options_helper.rb | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'actionpack/lib/action_view/helpers/form_options_helper.rb') diff --git a/actionpack/lib/action_view/helpers/form_options_helper.rb b/actionpack/lib/action_view/helpers/form_options_helper.rb index 39cd63074b..abb548c276 100644 --- a/actionpack/lib/action_view/helpers/form_options_helper.rb +++ b/actionpack/lib/action_view/helpers/form_options_helper.rb @@ -330,9 +330,12 @@ module ActionView container.map do |element| html_attributes = option_html_attributes(element) text, value = option_text_and_value(element).map { |item| item.to_s } - selected_attribute = ' selected="selected"' if option_value_selected?(value, selected) - disabled_attribute = ' disabled="disabled"' if disabled && option_value_selected?(value, disabled) - %() + + html_attributes[:selected] = 'selected' if option_value_selected?(value, selected) + html_attributes[:disabled] = 'disabled' if disabled && option_value_selected?(value, disabled) + html_attributes[:value] = value + + content_tag(:option, text, html_attributes) end.join("\n").html_safe end @@ -649,11 +652,9 @@ module ActionView private def option_html_attributes(element) - return "" unless Array === element + return {} unless Array === element - element.select { |e| Hash === e }.reduce({}, :merge).map do |k, v| - " #{k}=\"#{ERB::Util.html_escape(v.to_s)}\"" - end.join + Hash[element.select { |e| Hash === e }.reduce({}, :merge).map { |k, v| [k, ERB::Util.html_escape(v.to_s)] }] end def option_text_and_value(option) -- cgit v1.2.3