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:
parent
e5a8d8ebbb
commit
c80f974fa3
3 changed files with 35 additions and 0 deletions
|
@ -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 @@ 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:
|
||||
|
@ -123,6 +137,15 @@ module ActionView
|
|||
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 @@ class FormHelperTest < Test::Unit::TestCase
|
|||
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(
|
||||
|
|
Loading…
Reference in a new issue