class JsonFields::ArraySimpleStructure

Public Instance Methods

assemble(values) click to toggle source

Takes in values and returns a normal structure that can be saved

# File lib/json_fields/array_simple_structure.rb, line 27
def assemble(values)
  if allow_blank
    values
  else
    values.delete_if(&:blank?)
  end
end
template(object_name, method, options) click to toggle source

`object_name` is a String snake_case name of the object `method` is a Symbol of the method being called `options` is a Hash. `options` contains the instance of the object returns the HTML template to be used

# File lib/json_fields/array_simple_structure.rb, line 8
def template(object_name, method, options)
  obj = options[:object]
  id = [object_name, method, 'json_field'].join('_')

  content_tag(:div, id: id) do
    html = content_tag(:a, 'Add Field', href: '#', class: 'btn btn-add add-json-fields', 'data-target' => id)
    (Array(obj.send(method)) + [""]).collect.with_index { |value, idx|
      html += content_tag(:div, class: ['template', options.delete(:wrapper_class)].compact.join(' ')) do
        [text_field_tag("#{object_name}[#{method}][]", nil, value: value, class: 'json-field-control', id: nil, name: "#{object_name}[#{method}][]"),
         content_tag(:a, '-', href: '#', class: 'btn btn-remove remove-json-fields')
        ].join.html_safe
      end
    }
    html.html_safe
  end

end