Class: BaseEditingBootstrap::Forms::FieldRenderer

Inherits:
Object
  • Object
show all
Defined in:
lib/base_editing_bootstrap/forms/field_renderer.rb

Overview

Responsible for deciding which template and locals to use for form fields Usage: Utilities::FormFieldRenderer.new(view_context, form, field, readonly:).render

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(view, form, field, readonly: nil) ⇒ FieldRenderer

Returns a new instance of FieldRenderer.



7
8
9
10
11
12
13
14
15
16
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 7

def initialize(view, form, field, readonly: nil)
  @view = view
  @form = form
  @field = field
  @readonly = readonly
  @locals = { form: form, field: field }
  @type = nil
  @generic_field = nil
  determine_field_and_locals
end

Instance Attribute Details

#fieldObject (readonly)

Returns the value of attribute field.



5
6
7
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 5

def field
  @field
end

#formObject (readonly)

Returns the value of attribute form.



5
6
7
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 5

def form
  @form
end

#generic_fieldObject (readonly)

Returns the value of attribute generic_field.



5
6
7
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 5

def generic_field
  @generic_field
end

#localsObject (readonly)

Returns the value of attribute locals.



5
6
7
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 5

def locals
  @locals
end

#typeObject (readonly)

Returns the value of attribute type.



5
6
7
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 5

def type
  @type
end

#viewObject (readonly)

Returns the value of attribute view.



5
6
7
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 5

def view
  @view
end

Instance Method Details

#readonly_valueObject



43
44
45
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 43

def readonly_value
  @readonly.nil? ? view.readonly_attribute?(field, form.object) : @readonly
end

#renderObject

Perform full rendering and return SafeBuffer



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 19

def render
  tmpl = template
  view.bs_logger.debug do
    <<~TEXT
      TYPE: #{type}
      GENERIC_FIELD: #{generic_field}
      TEMPLATE: #{tmpl.short_identifier}
      LOCALS:#{locals}
    TEXT
  end
  tmpl.render(view, locals)
end

#templateObject

Public helpers for tests or external callers



33
34
35
36
37
38
39
40
41
# File 'lib/base_editing_bootstrap/forms/field_renderer.rb', line 33

def template
  view.find_template_with_fallbacks(
    form.object,
    field,
    "form_field",
    generic_field,
    readonly: readonly_value
  )
end