From a94e7d7897a300a95d5d5a00c5efc573b42bcb58 Mon Sep 17 00:00:00 2001
From: Stephen Anderson <stephen@bendycode.com>
Date: Tue, 6 Jan 2009 11:28:40 -0600
Subject: Sanitized the id generated by text_area_tag helper method.
 text_area_tag('item[description]') should return: <textarea
 id="item_description" name="item[description]"></textarea> instead of:
 <textarea id="item[description]" name="item[description]"></textarea> The old
 id was causing HTML validation failures.

Signed-off-by: Michael Koziarski <michael@koziarski.com>
---
 actionpack/lib/action_view/helpers/form_tag_helper.rb | 2 +-
 actionpack/test/template/form_tag_helper_test.rb      | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

(limited to 'actionpack')

diff --git a/actionpack/lib/action_view/helpers/form_tag_helper.rb b/actionpack/lib/action_view/helpers/form_tag_helper.rb
index e44ad80068..8ab78e7bc6 100644
--- a/actionpack/lib/action_view/helpers/form_tag_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_tag_helper.rb
@@ -258,7 +258,7 @@ module ActionView
           options["cols"], options["rows"] = size.split("x") if size.respond_to?(:split)
         end
 
-        content_tag :textarea, content, { "name" => name, "id" => name }.update(options.stringify_keys)
+        content_tag :textarea, content, { "name" => name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
       end
 
       # Creates a check box form input tag.
diff --git a/actionpack/test/template/form_tag_helper_test.rb b/actionpack/test/template/form_tag_helper_test.rb
index 5ca4d4d6ea..09d199b75d 100644
--- a/actionpack/test/template/form_tag_helper_test.rb
+++ b/actionpack/test/template/form_tag_helper_test.rb
@@ -154,6 +154,11 @@ class FormTagHelperTest < ActionView::TestCase
     assert_dom_equal expected, actual
   end
 
+  def test_text_area_tag_id_sanitized
+    input_elem = root_elem(text_area_tag("item[][description]"))
+    assert_match VALID_HTML_ID, input_elem['id']
+  end
+
   def test_text_field_tag
     actual = text_field_tag "title", "Hello!"
     expected = %(<input id="title" name="title" type="text" value="Hello!" />)
-- 
cgit v1.2.3