Module: ActiveForm::Mixins::OptionElementMethods

Defined in:
lib/active_form/mixins/option_element_methods.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
# File 'lib/active_form/mixins/option_element_methods.rb', line 3

def self.included(base)
  base.define_html_flags(:checked, false)
end

Instance Method Details

#checkedObject



35
36
37
# File 'lib/active_form/mixins/option_element_methods.rb', line 35

def checked
  self.html_flags[:checked]
end

#checked=(value) ⇒ Object



39
40
41
42
43
# File 'lib/active_form/mixins/option_element_methods.rb', line 39

def checked=(value)
  self.html_flags[:checked] = value.to_s.to_boolean
  self.element_value = (self.html_flags[:checked] ? self.checked_value : self.fallback_value)
  self.html_flags[:checked]
end

#checked?Boolean Also known as: active?, selected?

Returns:

  • (Boolean)


29
30
31
# File 'lib/active_form/mixins/option_element_methods.rb', line 29

def checked?
  perform_check!
end

#checked_valueObject



21
22
23
# File 'lib/active_form/mixins/option_element_methods.rb', line 21

def checked_value
  @checked_value ||= nil
end

#checked_value=(value) ⇒ Object



17
18
19
# File 'lib/active_form/mixins/option_element_methods.rb', line 17

def checked_value=(value)
  @checked_value = value
end

#options=(val) ⇒ Object Also known as: option=



7
8
9
10
11
12
13
14
# File 'lib/active_form/mixins/option_element_methods.rb', line 7

def options=(val)
  if val.kind_of?(Array)
    self.fallback_value = val.last
    self.checked_value = val.first
  else
    self.checked_value = val
  end
end

#perform_check!Object



45
46
47
48
49
# File 'lib/active_form/mixins/option_element_methods.rb', line 45

def perform_check!
  self.html_flags[:checked] = !self.blank? && self.element_value == self.checked_value
  self.element_value = (self.html_flags[:checked] ? self.checked_value : self.fallback_value)
  self.html_flags[:checked]
end

#required=(value) ⇒ Object



51
52
53
54
55
56
57
58
59
# File 'lib/active_form/mixins/option_element_methods.rb', line 51

def required=(value)
  self.option_flags[:required] = value.to_s.to_boolean
  if self.option_flags[:required]
    req = proc { |v| v.element.errors.add(v.message, 'confirm') unless v.element.checked? }
    validates_with_proc :code => 'required', :proc => req
  else
    validators.delete_if { |v| v.code == 'required' }
  end
end

#valid_option?(value) ⇒ Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/active_form/mixins/option_element_methods.rb', line 25

def valid_option?(value)
  [self.checked_value, self.fallback_value].include?(value)
end