class Formize::Definition::Form

Represents an environment for a form or list of fields of one Record

Attributes

elements[R]
id[R]
model[R]
name[R]
options[R]
record_name[R]
unique_name[R]

Public Class Methods

new(name, model, options={}) click to toggle source
# File lib/formize/definition/form.rb, line 11
def initialize(name, model, options={})
  @name = name
  @model = model
  @options = options
  @elements = []
  @@count += 1
  @id = @@count.to_s(36)
  @unique_name = @options.delete(:unique_name) unless @options[:unique_name].blank?
  @unique_name ||= "_formize#{@id}"
  @record_name = @model.name.underscore
  @elements_count = 0
end

Public Instance Methods

action_name() click to toggle source
# File lib/formize/definition/form.rb, line 60
def action_name
  @options[:action_name] || :formize
end
all_elements() click to toggle source
# File lib/formize/definition/form.rb, line 76
def all_elements
  return elements.collect{|e| e.all_elements}.flatten
end
all_fields() click to toggle source
# File lib/formize/definition/form.rb, line 68
def all_fields
  return elements.inject(HashWithIndifferentAccess.new){|h, e| h.merge!(e.all_fields)}
end
controller_method_name() click to toggle source

protected

# File lib/formize/definition/form.rb, line 52
def controller_method_name
  @options[:controller_method_name] || "formize_#{model.underscore}"
end
dependents() click to toggle source
# File lib/formize/definition/form.rb, line 72
def dependents
  return elements.collect{|e| e.dependents}.flatten
end
dependents_on(element) click to toggle source
# File lib/formize/definition/form.rb, line 80
def dependents_on(element)
  return elements.collect{|e| e.dependents_on(element)}.flatten
end
field(name, options={}) click to toggle source
# File lib/formize/definition/form.rb, line 37
def field(name, options={})
  return new_element(Field, name, options)
end
field_set(name=nil, options={}) { |field_set| ... } click to toggle source
# File lib/formize/definition/form.rb, line 24
def field_set(name=nil, options={}, &block)
  raise ArgumentError.new("Missing block") unless block_given?
  field_set = new_element(FieldSet, name, options)
  yield field_set
end
fields(*args) click to toggle source
# File lib/formize/definition/form.rb, line 41
def fields(*args)
  options = {}
  options = args.delete_at(-1) if args[-1].is_a?(Hash)
  for name in args
    new_element(Field, name, options)
  end
end
group(name, options={}) { |group| ... } click to toggle source
# File lib/formize/definition/form.rb, line 30
def group(name, options={}, &block)
  raise ArgumentError.new("Missing block") unless block_given?
  name, options = nil, name if name.is_a? Hash
  group = new_element(Group, name, options)
  yield group
end
hidden_if(element) click to toggle source
# File lib/formize/definition/form.rb, line 88
def hidden_if(element)
  return elements.collect{|e| e.hidden_if(element)}.flatten
end
mono_choices() click to toggle source
# File lib/formize/definition/form.rb, line 64
def mono_choices
  return elements.collect{|e| e.mono_choices}.flatten
end
shown_if(element) click to toggle source
# File lib/formize/definition/form.rb, line 84
def shown_if(element)
  return elements.collect{|e| e.shown_if(element)}.flatten
end
view_method_name() click to toggle source
# File lib/formize/definition/form.rb, line 56
def view_method_name
  @options[:method_name] || "_form_#{model.underscore}"
end

Private Instance Methods

new_element(klass, *args) click to toggle source
# File lib/formize/definition/form.rb, line 100
def new_element(klass, *args)
  raise ArgumentError.new("Bad child type: #{klass.name} (#{klass.ancestors.inspect}). Must be an Formize::Definition::FormElement") unless klass < Formize::Definition::FormElement # klass.ancestors.include? Formize::FormElement
  element = klass.new(self, nil, *args)
  @elements << element
  return element
end
new_id() click to toggle source
# File lib/formize/definition/form.rb, line 95
def new_id
  @elements_count += 1
  return @elements_count.to_s(36)
end