Class: RubyUIAdmin::Fields::KeyValueField

Inherits:
BaseField
  • Object
show all
Defined in:
lib/ruby_ui_admin/fields/key_value_field.rb

Overview

Edits a Hash value. Displayed as a key/value table; edited as JSON in a textarea.

Instance Attribute Summary

Attributes inherited from BaseField

#block, #id, #options, #resource

Instance Method Summary collapse

Methods inherited from BaseField

#database_id, #default_value, #description, field_type, #fill, #filterable?, #formatted_value, #has_default?, #help, #initialize, #link_to_record?, #name, #permit_param, #permit_params, #permitted_param, #placeholder, #readonly?, register_as, #required?, #sort_lambda, #sortable?, #type, #value, #visible?, #visible_in_view?

Constructor Details

This class inherits a constructor from RubyUIAdmin::Fields::BaseField

Instance Method Details

#default_hidden_viewsObject



11
12
13
# File 'lib/ruby_ui_admin/fields/key_value_field.rb', line 11

def default_hidden_views
  %i[index]
end

#fill_value(record, value) ⇒ Object

Parse the submitted JSON back into a Hash before assigning.



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ruby_ui_admin/fields/key_value_field.rb', line 25

def fill_value(record, value)
  parsed =
    if value.is_a?(String) && value.present?
      begin
        JSON.parse(value)
      rescue JSON::ParserError
        value
      end
    else
      value
    end

  super(record, parsed)
end

#value_as_json(record) ⇒ Object



15
16
17
18
19
20
21
22
# File 'lib/ruby_ui_admin/fields/key_value_field.rb', line 15

def value_as_json(record)
  raw = value(record)
  return "{}" if raw.blank?

  JSON.pretty_generate(raw)
rescue
  raw.to_s
end