Sha256: e8157ca83a0ad8b1162f023ca6e123ec17e25464f7cf867a7b4f8a58bcad8089
Contents?: true
Size: 1.39 KB
Versions: 11
Compression:
Stored size: 1.39 KB
Contents
require 'type_station/blocks/base' module TypeStation module Blocks class Entity < Base def data { action: options[:action], id: options[:model_id] || model.to_param, type: (options[:type] || model._type).to_s.classify, parent_id: options[:model_parent_id] || model.parent_id.to_s, fields: model_fields, values: model_values, create_url: options[:create_url], position: model.position, options: options[:options] || data_options } end private def data_options nil end def render_default(content) nil end def model_fields lambda_binging = Struct.new(:model).new(model) options[:fields].map do |field| if field[:options] && field[:options].is_a?(Proc) field[:options] = lambda_binging.instance_exec(&field[:options]) end field end end def model_values values = options[:fields].map do |field| content = model.get(field[:name]) raw_value = content.respond_to?(:value) ? content.value : content.to_s if raw_value value = @sanitizer.sanitize(raw_value) [field[:name], value] else nil end end Hash[*values.compact.flatten(1)] end end end end
Version data entries
11 entries across 11 versions & 1 rubygems