aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb
diff options
context:
space:
mode:
authorCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-01-31 16:31:17 -0200
committerCarlos Antonio da Silva <carlosantoniodasilva@gmail.com>2012-02-02 09:40:22 -0200
commit7af0ec75d0d933d75f9a63a63bbbde554f206721 (patch)
tree481d56735c6c1a5d0efb6faa2fb30b435789587f /actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb
parent9323fb60572815fc63fa618a5bd17b68cf8c8e35 (diff)
downloadrails-7af0ec75d0d933d75f9a63a63bbbde554f206721.tar.gz
rails-7af0ec75d0d933d75f9a63a63bbbde554f206721.tar.bz2
rails-7af0ec75d0d933d75f9a63a63bbbde554f206721.zip
Add collection_check_boxes helper
[Carlos Antonio da Silva + Rafael Mendonça França]
Diffstat (limited to 'actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb')
-rw-r--r--actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb b/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb
new file mode 100644
index 0000000000..d8f7a1fff6
--- /dev/null
+++ b/actionpack/lib/action_view/helpers/tags/collection_check_boxes.rb
@@ -0,0 +1,30 @@
+module ActionView
+ module Helpers
+ module Tags
+ class CollectionCheckBoxes < CollectionRadioButtons
+ delegate :check_box, :label, :to => :@template_object
+
+ def render
+ rendered_collection = render_collection(
+ @method_name, @collection, @value_method, @text_method, @options, @html_options
+ ) do |value, text, default_html_options|
+ default_html_options[:multiple] = true
+
+ if block_given?
+ yield sanitize_attribute_name(@method_name, value), text, value, default_html_options
+ else
+ check_box(@object_name, @method_name, default_html_options, value, nil) +
+ label(@object_name, sanitize_attribute_name(@method_name, value), text, :class => "collection_check_boxes")
+ end
+ end
+
+ # Prepend a hidden field to make sure something will be sent back to the
+ # server if all checkboxes are unchecked.
+ hidden = @template_object.hidden_field_tag("#{@object_name}[#{@method_name}][]", "", :id => nil)
+
+ wrap_rendered_collection(rendered_collection + hidden, @options)
+ end
+ end
+ end
+ end
+end