Permalink
Browse files

Added FormHelper#radio_button to work with radio buttons like its alr…

…eady possible with check boxes [Michael Koziarski]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@151 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent e5a8d8e commit c80f974fa3071104397d8dd5752ff60bca1881fe @dhh dhh committed Dec 14, 2004
View
@@ -1,5 +1,7 @@
*SVN*
+* Added FormHelper#radio_button to work with radio buttons like its already possible with check boxes [Michael Koziarski]
+
* Added TemplateError#backtrace that makes it much easier to debug template errors from unit and functional tests
* Added display of error messages with scaffolded form pages
@@ -99,6 +99,20 @@ def text_area(object, method, options = {})
def check_box(object, method, options = {}, checked_value = "1", unchecked_value = "0")
InstanceTag.new(object, method, self).to_check_box_tag(options, checked_value, unchecked_value)
end
+
+ # Returns a radio button tag for accessing a specified attribute (identified by +method+) on an object
+ # assigned to the template (identified by +object+). If the current value of +method+ is +tag_value+ the
+ # radio button will be checked. Additional options on the input tag can be passed as a
+ # hash with +options+.
+ # Example (call, result). Imagine that @post.category returns "rails":
+ # radio_button("post", "category", "rails")
+ # radio_button("post", "category", "java")
+ # <input type="radio" id="post_category" name="post[category] value="rails" checked="checked" />
+ # <input type="radio" id="post_category" name="post[category] value="java" />
+ #
+ def radio_button(object, method, tag_value, options = {})
+ InstanceTag.new(object, method, self).to_radio_button_tag(tag_value, options)
+ end
end
class InstanceTag #:nodoc:
@@ -123,6 +137,15 @@ def to_input_field_tag(field_type, options = {})
add_default_name_and_id(html_options)
tag("input", html_options)
end
+
+ def to_radio_button_tag(tag_value, options={})
+ html_options = DEFAULT_FIELD_OPTIONS.merge(options)
+ html_options.merge!({"checked"=>"checked"}) if value == tag_value
+ html_options.merge!({"type"=>"radio", "value"=>tag_value.to_s})
+
+ add_default_name_and_id(html_options)
+ tag("input", html_options)
+ end
def to_text_area_tag(options = {})
options = DEFAULT_TEXT_AREA_OPTIONS.merge(options)
@@ -1,4 +1,5 @@
require 'test/unit'
+require 'erb'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_helper'
class FormHelperTest < Test::Unit::TestCase
@@ -70,6 +71,15 @@ def test_check_box
check_box("post", "secret")
)
end
+
+ def test_radio_button
+ assert_equal('<input checked="checked" id="post_title" name="post[title]" size="30" type="radio" value="Hello World" />',
+ radio_button("post", "title", "Hello World")
+ )
+ assert_equal('<input id="post_title" name="post[title]" size="30" type="radio" value="Goodbye World" />',
+ radio_button("post", "title", "Goodbye World")
+ )
+ end
def test_text_area
assert_equal(

0 comments on commit c80f974

Please sign in to comment.