fix destructive stringify_keys for label_tag

This commit is contained in:
Waynn Lue 2011-08-11 00:30:45 -07:00
parent 54b83566cc
commit 895d64531d
2 changed files with 8 additions and 2 deletions

View File

@ -179,9 +179,9 @@ module ActionView
def label_tag(name = nil, content_or_options = nil, options = nil, &block)
options = content_or_options if block_given? && content_or_options.is_a?(Hash)
options ||= {}
options.stringify_keys!
options = options.stringify_keys
options["for"] = sanitize_to_id(name) unless name.blank? || options.has_key?("for")
content_tag :label, content_or_options || name.to_s.humanize, options, &block
content_tag :label, content_or_options.is_a?(Hash) ? options : (content_or_options || name.to_s.humanize), options, &block
end
# Creates a hidden form input field used to transmit data that would be lost due to HTTP's statelessness or

View File

@ -530,6 +530,12 @@ class FormTagHelperTest < ActionView::TestCase
assert_equal options, { :option => "random_option" }
end
def test_image_label_tag_options_symbolize_keys_side_effects
options = { :option => "random_option" }
actual = label_tag "submit source", "title", options
assert_equal options, { :option => "random_option" }
end
def protect_against_forgery?
false
end