Module: Tramway::Admin::InputsHelper

Included in:
ApplicationHelper
Defined in:
app/helpers/tramway/admin/inputs_helper.rb

Instance Method Summary collapse

Instance Method Details

#association_params(form_object:, property:, value:, object:) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'app/helpers/tramway/admin/inputs_helper.rb', line 4

def association_params(form_object:, property:, value:, object:)
  full_class_name_association = form_object.class.full_class_name_association(property)
  {
    label: false,
    input_html: {
      name: "#{object}[#{property}]",
      id: "#{object}_#{property}",
      value: (form_object.send(property) || form_object.model.send("#{property}_id") || value)
    },
    selected: (form_object.model.send("#{property}_id") || value),
    collection: full_class_name_association.active.map do |obj|
      decorator_class(full_class_name_association).decorate obj
    end
  }
end

#polymorphic_association_params(object:, form_object:, property:, value:) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/helpers/tramway/admin/inputs_helper.rb', line 20

def polymorphic_association_params(object:, form_object:, property:, value:)
  full_class_names = form_object.model.class.send("#{property}_type").values.map &:constantize
  collection = full_class_names.map do |class_name|
    class_name.active.map do |obj|
      decorator_class(class_name).decorate obj
    end
  end.flatten
  {
    as: :select,
    label: false,
    input_html: {
      name: "#{object}[#{property}]",
      id: "#{object}_#{property}",
      value: (form_object.send(property) || form_object.model.send("#{property}_id") || value)
    },
    selected: (form_object.model.send("#{property}_id") || value),
    collection: collection,
    label_method: lambda do |obj|
      "#{obj.class.model_name.human} | #{obj.name}"
    end
  }
end