1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Added FormHelper#radio_button to work with radio buttons like its already possible with check boxes [Michael Koziarski]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@151 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2004-12-14 13:48:27 +00:00
parent e5a8d8ebbb
commit c80f974fa3
3 changed files with 35 additions and 0 deletions

View file

@ -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

View file

@ -99,6 +99,20 @@ module ActionView
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:
@ -124,6 +138,15 @@ module ActionView
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)
add_default_name_and_id(options)

View file

@ -1,4 +1,5 @@
require 'test/unit'
require 'erb'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/form_helper'
class FormHelperTest < Test::Unit::TestCase
@ -71,6 +72,15 @@ class FormHelperTest < Test::Unit::TestCase
)
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(
'<textarea cols="40" id="post_body" name="post[body]" rows="20" wrap="virtual">Back to the hill and over it again!</textarea>',