diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-01-16 21:06:13 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-01-17 00:05:29 -0300 |
commit | d6b9eb9b4417f1f8705284e520b796466a690ed6 (patch) | |
tree | 4ef4b0a2b2c00a92c8917d2d4928bf910e3b7dc5 /actionpack/lib/action_view/helpers/tags/radio_button.rb | |
parent | f42e1db35ab3a0300b8e02ac55e0ae82873b5986 (diff) | |
download | rails-d6b9eb9b4417f1f8705284e520b796466a690ed6.tar.gz rails-d6b9eb9b4417f1f8705284e520b796466a690ed6.tar.bz2 rails-d6b9eb9b4417f1f8705284e520b796466a690ed6.zip |
Extract RadioButton
Diffstat (limited to 'actionpack/lib/action_view/helpers/tags/radio_button.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/tags/radio_button.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/tags/radio_button.rb b/actionpack/lib/action_view/helpers/tags/radio_button.rb new file mode 100644 index 0000000000..3f6a360928 --- /dev/null +++ b/actionpack/lib/action_view/helpers/tags/radio_button.rb @@ -0,0 +1,35 @@ +module ActionView + module Helpers + module Tags + class RadioButton < Base #:nodoc: + def initialize(object_name, method_name, template_object, tag_value, options) + @tag_value = tag_value + super(object_name, method_name, template_object, options) + end + + def render + options = @options.stringify_keys + options["type"] = "radio" + options["value"] = @tag_value + + if options.has_key?("checked") + cv = options.delete "checked" + checked = cv == true || cv == "checked" + else + checked = radio_button_checked?(value(object)) + end + + options["checked"] = "checked" if checked + add_default_name_and_id_for_value(@tag_value, options) + tag("input", options) + end + + private + + def radio_button_checked?(value) + value.to_s == @tag_value.to_s + end + end + end + end +end |