class FormGroups::FieldBuilder

Constants

FIELD_HELPERS
OTHER_HELPERS

Public Class Methods

new(object_name, method, object, template, options) click to toggle source
# File lib/form_groups/field_builder.rb, line 23
def initialize object_name, method, object, template, options
  @method  , @object_name, @object = method  , object_name, object
  @template, @options              = template, options

  @default_options = @options ? @options.slice(:index, :namespace) : {}
end

Public Instance Methods

errors() click to toggle source
# File lib/form_groups/field_builder.rb, line 30
def errors
  @object.errors[@method]
end
label(text, sub_id = '', **options) click to toggle source
# File lib/form_groups/field_builder.rb, line 34
def label text, sub_id = '', **options
  full_id  = @method.to_s
  full_id += "_#{sub_id}" unless sub_id.nil? or sub_id.to_s.empty?

  @template.label full_id.to_sym, text, object_options.merge(options)
end
select(placeholder = nil, **options, &block) click to toggle source
# File lib/form_groups/field_builder.rb, line 48
def select placeholder = nil, **options, &block
  options['data-placeholder'] = placeholder

  @template.select @method, nil, object_options, html_options(options), &block
end
text_area(placeholder = nil, **options) click to toggle source
# File lib/form_groups/field_builder.rb, line 41
def text_area placeholder = nil, **options
  options['placeholder'   ] = placeholder
  options['aria-multiline'] = true

  @template.text_area @method, validated_options(options)
end

Private Instance Methods

html_options(options = {}) click to toggle source
# File lib/form_groups/field_builder.rb, line 60
def html_options options = {}
  options = options.merge(validations) if FormGroups.map_validators
  options = options.merge('aria-invalid' => 'true') if errors.any?

  options
end
object_options() click to toggle source
# File lib/form_groups/field_builder.rb, line 56
def object_options
  @default_options.merge(object: @object)
end
validated_options(options) click to toggle source
# File lib/form_groups/field_builder.rb, line 67
def validated_options options
  object_options.merge html_options(options)
end
validations() click to toggle source
# File lib/form_groups/field_builder.rb, line 71
def validations
  validations = validators.map do |validator|
    result  = {}

    mapping = FormGroups.validator_mapping.select { |v| validator.is_a? v }
    mapping.each_value { |m| m.call validator, result }

    result
  end

  Hash[*validations.collect{ |h| h.to_a }.flatten]
end
validators() click to toggle source
# File lib/form_groups/field_builder.rb, line 84
def validators
  @object.class.validators.select do |validator|
    validator.attributes.include? @method
  end
end