module RailsJsonField::Rails::FormBuilder

Private Instance Methods

json_field(method, options = {}) click to toggle source
# File lib/rails_json_field/rails/form_builder.rb, line 9
def json_field(method, options = {})
  object_json = @object.nil? ? {} : @object.send(method)
  id = SecureRandom.uuid

  content_tag :div, id: id do
    object_json.each do |k, v|
      concat(
        content_tag(:div, class: 'json-field-field') do
          [
            concat(content_tag(:input, "", type:'hidden', name: "#{@object_name}[#{method}][#{k}]", value: v, class: "json-field-hidden-field")),
            concat(content_tag(:input, "", type: 'text', value: k, class: "json-field-key-field")),
            concat(content_tag(:span, ":")),
            concat(content_tag(:input, "", type: 'text', value: v, class: "json-field-value-field")),
            concat(content_tag(:a, "Remove", href: '#', class: "json-field-remove-field"))
          ]
        end
      )
    end

    concat(content_tag(:a, "Add", href: '#', class: 'json-field-add-field'))
    concat(javascript_tag("railsJsonField('#{id}', '#{@object_name}', '#{method}')"))
  end
end