Module: Practical::Views::ErrorHandling

Defined in:
app/lib/practical/views/error_handling.rb

Class Method Summary collapse

Class Method Details

.build_error_json(model:, helpers:) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'app/lib/practical/views/error_handling.rb', line 2

def self.build_error_json(model:, helpers:)
  return model.errors.map do |error|
    error_container_id = error_container_id(model: model, error: error, helpers: helpers)
    element_id = error_element_id(model: model, error: error, helpers: helpers)

    {
      container_id: error_container_id,
      element_to_invalidate_id: element_id,
      message: error.message,
      type: error.type
    }
  end
end

.error_container_id(model:, error:, helpers:) ⇒ Object



16
17
18
19
20
21
22
23
# File 'app/lib/practical/views/error_handling.rb', line 16

def self.error_container_id(model:, error:, helpers:)
  if error.options[:error_container_id].present?
    return error.options[:error_container_id]
  else
    attribute_name_parts = error.attribute.to_s.split(".")
    return helpers.field_id(model, *attribute_name_parts, :errors)
  end
end

.error_element_id(model:, error:, helpers:) ⇒ Object



25
26
27
28
29
30
31
32
# File 'app/lib/practical/views/error_handling.rb', line 25

def self.error_element_id(model:, error:, helpers:)
  if error.options[:element_id].present?
    return error.options[:element_id]
  else
    attribute_name_parts = error.attribute.to_s.split(".")
    return helpers.field_id(model, *attribute_name_parts)
  end
end