class Formulary::HtmlForm::Fields::CheckboxGroup

Public Class Methods

compatible_type() click to toggle source
# File lib/formulary/html_form/fields/checkbox_group.rb, line 3
def self.compatible_type
  "checkbox"
end
new(html_form, group_name, elements) click to toggle source
Calls superclass method
# File lib/formulary/html_form/fields/checkbox_group.rb, line 11
def initialize(html_form, group_name, elements)
  super
  @values = []
end
supports_required?() click to toggle source
# File lib/formulary/html_form/fields/checkbox_group.rb, line 7
def self.supports_required?
  true
end

Public Instance Methods

set_value(value) click to toggle source
# File lib/formulary/html_form/fields/checkbox_group.rb, line 16
def set_value(value)
  @values = [value].flatten
end

Protected Instance Methods

presence_correct?() click to toggle source
# File lib/formulary/html_form/fields/checkbox_group.rb, line 22
def presence_correct?
  @elements.each do |element|
    if element.attributes.include?("required")
      return false unless @values.include?(value_from_element(element))
    end
  end
  return true
end
value_from_element(element) click to toggle source

Our exhaustive testing concludes that browsers submit “on” when the checkbox has no value.

# File lib/formulary/html_form/fields/checkbox_group.rb, line 39
def value_from_element(element)
  element.attributes["value"].try(:value) || "on"
end
value_in_list?() click to toggle source
# File lib/formulary/html_form/fields/checkbox_group.rb, line 31
def value_in_list?
  return true if @values.empty?
  allowed_values = @elements.map { |e| value_from_element(e) }
  (allowed_values & @values) == @values
end