Module: CmAdmin::ViewHelpers::FormFieldHelper

Included in:
FormHelper
Defined in:
lib/cm_admin/view_helpers/form_field_helper.rb

Instance Method Summary collapse

Instance Method Details

#input_field_for_column(f, field) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/cm_admin/view_helpers/form_field_helper.rb', line 4

def input_field_for_column(f, field)
  return unless field.display_if.call(f.object)
  value = field.helper_method ? send(field.helper_method, f.object, field.field_name) : f.object.send(field.field_name)
  is_required = f.object._validators[field.field_name].map(&:kind).include?(:presence)
  required_class = is_required ? 'required' : ''
  case field.input_type
  when :integer
    return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.humanize.downcase}", data: { behaviour: 'integer-only' }
  when :decimal
    return f.number_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'decimal-only' }
  when :string
    return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
  when :single_select
    return f.select field.field_name, options_for_select(select_collection_value(f.object, field), f.object.send(field.field_name)), {include_blank: field.placeholder.to_s}, class: "normal-input #{required_class} select-2", disabled: field.disabled
  when :multi_select
    return f.select field.field_name, options_for_select(select_collection_value(f.object, field), f.object.send(field.field_name)), {include_blank: "Select #{field.field_name.to_s.downcase.gsub('_', ' ')}"}, class: "normal-input #{required_class} select-2", disabled: field.disabled, multiple: true
  when :date
    return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value&.strftime('%d-%m-%Y'), placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-only' }
  when :date_time
    return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-time' }
  when :text
    return f.text_area field.field_name, class: "normal-input #{required_class}", placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
  when :rich_text
    return f.rich_text_area field.field_name, class: "normal-input #{required_class}", placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
  when :single_file_upload
    return f.file_field field.field_name, class: "normal-input #{required_class}"
  when :multi_file_upload
    return f.file_field field.field_name, multiple: true, class: "normal-input #{required_class}"
  when :hidden
    return f.hidden_field field.field_name, value: value, name: field.html_attr[:name] || "#{f.object_name}[#{field.field_name}]"
  end
end

#select_collection_value(object, field) ⇒ Object

Refactor: Collection argument can be removed. helper_method argument will accept a method where value can be passed.



39
40
41
42
43
44
45
46
47
# File 'lib/cm_admin/view_helpers/form_field_helper.rb', line 39

def select_collection_value(object, field)
  if field.helper_method
    collection = send(field.helper_method, object, field.field_name)
  elsif field.collection
    collection = field.collection
  else
    collection = []
  end
end