Class: ActiveForm::Definition

Inherits:
Object
  • Object
show all
Includes:
Mixins::CommonMethods, Mixins::ContainerMethods, Mixins::ElementMethods
Defined in:
lib/rails/model/loader.rb,
lib/active_form/definition.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Mixins::ContainerMethods

#bound_value?, #define_localizer, #description, #export_value, #get_bound_value, included, #label, #localize, #localized?, #localizer, #set_bound_value, #submitted?, #title, #update_from_params, #update_value, #validated?

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, #label, #labelled?, #localize, #localized?, #readonly?, #register_container, #required=, #required?, #reset_formatting_filter, #reset_freeze_filter, #revert_value, #title, #update_options_and_attributes

Instance Attribute Details

#model_instanceObject

Returns the value of attribute model_instance.



4
5
6
# File 'lib/rails/model/loader.rb', line 4

def model_instance
  @model_instance
end

Class Method Details

.element_typeObject



68
69
70
# File 'lib/active_form/definition.rb', line 68

def self.element_type
  :form
end

Instance Method Details

#clear_validations!Object



6
7
8
9
# File 'lib/rails/model/loader.rb', line 6

def clear_validations!
  super
  model_instance.errors.clear if model_instance.respond_to?(:errors)
end

#default_attributesObject



58
59
60
61
62
# File 'lib/active_form/definition.rb', line 58

def default_attributes
  attrs = { :id => identifier, :class => css }
  attrs[:enctype] = 'multipart/form-data' if multipart?
  attrs
end


30
31
32
33
34
35
# File 'lib/active_form/definition.rb', line 30

def footer
  html = "</form>\n"
  html << script_tag
  html << "<!--x" + "[ #{identifier} ]".center(32, 'x') + "x-->\n"
  html
end

#header(include_advice = false) ⇒ Object



23
24
25
26
27
28
# File 'lib/active_form/definition.rb', line 23

def header(include_advice = false)
  html = "<!--o" + "[ #{identifier} ]".center(32, 'o') + "o-->\n"
  html << "<form #{element_attributes.as_attributes_string}>\n"
  html << validation_advice.to_s if include_advice
  html
end

#initialize_element(*args) ⇒ Object



17
18
19
20
21
# File 'lib/active_form/definition.rb', line 17

def initialize_element(*args)
  super
  self.action ||= "##{self.name}"
  self.method ||= 'post'    
end

#label_attributesObject



64
65
66
# File 'lib/active_form/definition.rb', line 64

def label_attributes
  { :class => label_css }
end

#render_element(builder = create_builder) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/active_form/definition.rb', line 46

def render_element(builder = create_builder)
  if contained?
    render_elements(builder)
  else
    builder.form(element_attributes) { render_elements(builder) }
  end
end

#render_elements(builder = create_builder, &block) ⇒ Object



54
55
56
# File 'lib/active_form/definition.rb', line 54

def render_elements(builder = create_builder, &block)
  elements.each { |elem| elem.to_html(builder, &block) }
end

#render_frozen(builder = create_builder) ⇒ Object



42
43
44
# File 'lib/active_form/definition.rb', line 42

def render_frozen(builder = create_builder)
  builder.form(element_attributes) { render_elements(builder) }
end

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



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

def render_label(builder = create_builder)
  builder.span(label, label_attributes)
end

#validate_elementObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rails/model/loader.rb', line 11

def validate_element
  super      
  code_lookup = ActiveRecord::Errors.default_error_messages.invert      
  if model_instance.respond_to?(:valid?) && model_instance.respond_to?(:errors)
    unless model_instance.valid?
      errors_on_base = [*model.instance.errors.on_base] rescue []
      errors_on_base.each { |msg| self.errors.add(msg, 'ar_base') unless msg.blank? }       
      model_instance.errors.each do |attr, msg| 
        if elem = self[attr]
          code = code_lookup.key?(msg) ? code_lookup[msg] : 'elem'
          msg = "%s: #{msg}" unless code == 'elem'
          elem.errors.add(elem.format_message(msg), "ar_#{code}")
        end
      end
    end
  end
end