EagerELK/ditty

View on GitHub
views/partials/form_control.haml

Summary

Maintainability
Test Coverage
- type = attributes.delete(:type)
- attributes[:value] ||= model.send(field) || default
- if help_text
  - attributes[:'aria-describedby'] = "#{attributes[:id]}_helptext"
- if type == 'hidden'
  %input{attributes, type: type, value: model.send(field) || default}
- else
  .form-group
    - if type != 'file'
      %label{ for: attributes[:id] }= label
      - if type == 'select'
        - options = attributes.delete(:options)
        - value = attributes.delete(:value)
        - if attributes[:multiple]
          - attributes[:name] = "#{attributes[:name]}[]" unless attributes[:name][-2..-1] == '[]'
        %select{attributes}
          - if attributes[:multiple]
            - options.each do |k, v| k = v if k.nil?; v = k if v.nil?;
              %option{ value: k.to_s, selected: value&.include?(k) }= v
          - else
            %option{ value: "" } -- Select One --
            - options.each do |k, v| k = v if k.nil?; v = k if v.nil?;
              %option{ value: k.to_s, selected: value == k }= v
      - elsif type == 'textarea'
        %textarea{attributes}= preserve(model.send(field) || default)
      - else
        %input{ attributes, type: type }
      - if model.errors[field]
        .invalid-feedback= model.errors[field].join(', ')
      - if help_text
        %small.form-text.text-muted{ id: "#{attributes[:id]}_helptext" }= help_text