Class: ActiveForm::Element::Base

Inherits:
Object
  • Object
show all
Includes:
Mixins::CommonMethods, Mixins::ElementMethods
Defined in:
lib/active_form/elements/base.rb

Constant Summary collapse

@@default_timezone =
:local

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins::ElementMethods

#accept_block, #contained?, #default_value, #define_formatting_filter, #define_freeze_filter, #description, #disabled?, #element_attributes, #element_binding, #element_binding_key, #element_name, #element_type, #element_value, #element_value=, #export_value, #fallback_value, #fallback_value=, #format_value, #formatted_value, #freeze_element, #freeze_value, #frozen?, #frozen_value, #frozen_value=, #hidden?, #hide_element, #identifier, included, #initialize_element, #label, #labelled?, #localize, #localized?, #readonly?, #register_container, #required=, #required?, #reset_formatting_filter, #reset_freeze_filter, #revert_value, #title, #update_options_and_attributes

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/active_form/elements/base.rb', line 41

def method_missing(method, *args, &block)   
  if (match = /^validates_(with_|within_|as_)?(.*)$/.match(method.to_s)) && ActiveForm::Validator::exists?(match.captures[1])
    define_validator(match.captures[1], *args, &block)
  else
    super
  end
end

Class Method Details

.create(definition_name, &block) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/active_form/elements/base.rb', line 54

def self.create(definition_name, &block)
  class_name = type_classname(definition_name)
  if !ActiveForm::Element.const_defined?(class_name)
    ActiveForm::Element.const_set(class_name, Class.new(self))
    if klass = ActiveForm::Element.const_get(class_name)
      klass.module_eval(&block) if block_given?
      ActiveForm::Element::register(klass)
      return klass
    end
  end
  nil
end

.inherited(derivative) ⇒ Object



49
50
51
52
# File 'lib/active_form/elements/base.rb', line 49

def self.inherited(derivative)
  ActiveForm::Element::register(derivative) if derivative.kind_of?(ActiveForm::Element::Base)
  super
end

Instance Method Details

#default_attributesObject



29
30
31
# File 'lib/active_form/elements/base.rb', line 29

def default_attributes
  { :name => element_name, :id => identifier, :class => css  }
end

#default_css_classObject



37
38
39
# File 'lib/active_form/elements/base.rb', line 37

def default_css_class
  "elem_#{element_type}"
end

#label_attributesObject



33
34
35
# File 'lib/active_form/elements/base.rb', line 33

def label_attributes
  { :for => identifier, :class => label_css }
end

#render_element(builder = create_builder) ⇒ Object



25
26
27
# File 'lib/active_form/elements/base.rb', line 25

def render_element(builder = create_builder)
  builder.span(label, { :id => identifier, :class => css })
end

#render_frozen(builder = create_builder) ⇒ Object



20
21
22
23
# File 'lib/active_form/elements/base.rb', line 20

def render_frozen(builder = create_builder)
  return builder.span('-', :class => 'blank') if formatted_value.blank?
  builder.text!(formatted_value)
end

#render_label(builder = create_builder) ⇒ Object Also known as: to_label



15
16
17
# File 'lib/active_form/elements/base.rb', line 15

def render_label(builder = create_builder)
  builder.label(label, label_attributes) if labelled?
end