Class: Formal::FormBuilder

Inherits:
ActionView::Helpers::FormBuilder
  • Object
show all
Defined in:
lib/formal/form_builder.rb

Overview

Public: Adds functionality to rails form builder

Instance Method Summary collapse

Instance Method Details

#check_box_with_label(method, text = nil, *args) ⇒ Object



36
37
38
39
40
# File 'lib/formal/form_builder.rb', line 36

def check_box_with_label(method, text = nil, *args)
  text = text || method.to_s
  box = [check_box(method, *args).html_safe, text].join(" ")
  label(method, box, *args)
end

#label(method, text = nil, options = {}, &block) ⇒ Object

Public: renders html label element

method - String or Symbol object attribute text - String text to be rendered inside of ‘label` markup

(optional, default: nil)

options - Hash of options

:error_element - String or Symbol representing html element the
                 error markup will be rendered in.
                 (optional, default: :span)
:hide_errors   - Boolean to hide error markup if it is to be
                 rendered. (optional)


18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/formal/form_builder.rb', line 18

def label(method, text = nil, options = {}, &block)
  error_element = options.delete(:error_element) || :span
  hide_errors   = options.delete(:hide_errors)
  i18n_text     = I18n.t("#{object_name}.#{method}", default: '', scope: "helpers.label").presence
  text          = i18n_text || text || method.to_s.humanize

  unless object.nil? || hide_errors
    errors = object.errors[method.to_sym]
    if errors.present?
      error_message = errors.is_a?(Array) ? errors.first : errors
      error_markup = @template.(error_element, error_message, class: 'error')
      text << " #{error_markup}"
    end
  end

  super(method, text.html_safe, options, &block)
end