aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-04-30 08:46:22 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-04-30 08:46:22 +0000
commit98306bed054c320833d9d48229c68da10a38f3d0 (patch)
treebf39496a159a38974ea6e1016d1a92c0c3ec0b83
parent14860ebe8226bd101531d8c0599035c9120cac4d (diff)
downloadrails-98306bed054c320833d9d48229c68da10a38f3d0.tar.gz
rails-98306bed054c320833d9d48229c68da10a38f3d0.tar.bz2
rails-98306bed054c320833d9d48229c68da10a38f3d0.zip
Fixed missing id uniqueness in FormTag#radio_button #1207 [Jarkko]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1253 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_view/helpers/form_helper.rb4
-rw-r--r--actionpack/test/template/form_helper_test.rb8
3 files changed, 10 insertions, 4 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index e751c88af8..3351ba5886 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fixed missing id uniqueness in FormTag#radio_button #1207 [Jarkko]
+
* Fixed assert_redirected_to to work with :only_path => false #1204 [Alisdair McDiarmid]
* Fixed render_partial_collection to output an empty string instead of nil when handed an empty array #1202 [Ryan Carver]
diff --git a/actionpack/lib/action_view/helpers/form_helper.rb b/actionpack/lib/action_view/helpers/form_helper.rb
index 4e25eee071..78f3f68830 100644
--- a/actionpack/lib/action_view/helpers/form_helper.rb
+++ b/actionpack/lib/action_view/helpers/form_helper.rb
@@ -175,6 +175,10 @@ module ActionView
options["type"] = "radio"
options["value"] = tag_value
options["checked"] = "checked" if value == tag_value
+ pretty_tag_value = tag_value.gsub(/\s/, "_").gsub(/\W/, "").downcase
+ options["id"] = @auto_index ?
+ "#{@object_name}_#{@auto_index}_#{@method_name}_#{pretty_tag_value}" :
+ "#{@object_name}_#{@method_name}_#{pretty_tag_value}"
add_default_name_and_id(options)
tag("input", options)
end
diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb
index 28e8865f38..21b9c24344 100644
--- a/actionpack/test/template/form_helper_test.rb
+++ b/actionpack/test/template/form_helper_test.rb
@@ -82,10 +82,10 @@ class FormHelperTest < Test::Unit::TestCase
end
def test_radio_button
- assert_equal('<input checked="checked" id="post_title" name="post[title]" type="radio" value="Hello World" />',
+ assert_equal('<input checked="checked" id="post_title_hello_world" name="post[title]" type="radio" value="Hello World" />',
radio_button("post", "title", "Hello World")
)
- assert_equal('<input id="post_title" name="post[title]" type="radio" value="Goodbye World" />',
+ assert_equal('<input id="post_title_goodbye_world" name="post[title]" type="radio" value="Goodbye World" />',
radio_button("post", "title", "Goodbye World")
)
end
@@ -166,10 +166,10 @@ class FormHelperTest < Test::Unit::TestCase
check_box("post[]", "secret")
)
assert_equal(
-"<input checked=\"checked\" id=\"post_#{pid}_title\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Hello World\" />",
+"<input checked=\"checked\" id=\"post_#{pid}_title_hello_world\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Hello World\" />",
radio_button("post[]", "title", "Hello World")
)
- assert_equal("<input id=\"post_#{pid}_title\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Goodbye World\" />",
+ assert_equal("<input id=\"post_#{pid}_title_goodbye_world\" name=\"post[#{pid}][title]\" type=\"radio\" value=\"Goodbye World\" />",
radio_button("post[]", "title", "Goodbye World")
)
end