Module: ActionForm::Rendering

Included in:
Base, Subform, SubformsCollection
Defined in:
lib/action_form/rendering.rb

Overview

Provides methods for rendering form elements and forms

Instance Method Summary collapse

Instance Method Details

#render_element(element) ⇒ Object



21
22
23
24
25
# File 'lib/action_form/rendering.rb', line 21

def render_element(element)
  render_label(element)
  render_input(element)
  render_inline_errors(element) if element.tags[:errors]
end

#render_elements(elements = elements_instances) ⇒ Object

rubocop:disable Metrics/MethodLength



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/action_form/rendering.rb', line 6

def render_elements(elements = elements_instances) # rubocop:disable Metrics/MethodLength
  elements.select(&:render?).each do |element|
    element.helpers = helpers
    if element.is_a?(SubformsCollection)
      render_many_subforms(element)
    elsif element.is_a?(Subform)
      render_subform(element)
    elsif element.input_type == :hidden
      input(**element.input_html_attributes)
    else
      render_element(element)
    end
  end
end

#render_form(**html_attributes, &block) ⇒ Object



41
42
43
# File 'lib/action_form/rendering.rb', line 41

def render_form(**html_attributes, &block)
  form(**@html_options, **html_attributes, &block)
end

#render_inline_errors(element) ⇒ Object



37
38
39
# File 'lib/action_form/rendering.rb', line 37

def render_inline_errors(element)
  div(class: "error-messages") { element.errors_messages.join(", ") }
end

#render_input(element, **html_attributes) ⇒ Object



33
34
35
# File 'lib/action_form/rendering.rb', line 33

def render_input(element, **html_attributes)
  render Input.new(element, **html_attributes)
end

#render_label(element) ⇒ Object



27
28
29
30
31
# File 'lib/action_form/rendering.rb', line 27

def render_label(element)
  return if hide_label?(element)

  label(**element.label_html_attributes) { element.label_text }
end

#render_many_subforms(subforms) ⇒ Object



49
50
51
# File 'lib/action_form/rendering.rb', line 49

def render_many_subforms(subforms)
  render(subforms)
end

#render_new_subform_button(**html_attributes, &block) ⇒ Object



61
62
63
# File 'lib/action_form/rendering.rb', line 61

def render_new_subform_button(**html_attributes, &block)
  a(**html_attributes, onclick: safe("easyFormAddSubform(event)"), &block)
end

#render_remove_subform_button(**html_attributes, &block) ⇒ Object



57
58
59
# File 'lib/action_form/rendering.rb', line 57

def render_remove_subform_button(**html_attributes, &block)
  a(**html_attributes, onclick: safe("easyFormRemoveSubform(event)"), &block)
end

#render_subform(subform) ⇒ Object



45
46
47
# File 'lib/action_form/rendering.rb', line 45

def render_subform(subform)
  render(subform)
end

#render_submit(**html_attributes) ⇒ Object



53
54
55
# File 'lib/action_form/rendering.rb', line 53

def render_submit(**html_attributes)
  input(name: "commit", type: "submit", value: "Submit", **html_attributes)
end