Sha256: 4ef28fd888ea851bb58aff1f5d27565f2da88f16b492868fd5157003dcc2039d

Contents?: true

Size: 1.88 KB

Versions: 34

Compression:

Stored size: 1.88 KB

Contents

module Account::FormsHelper
  PRESENCE_VALIDATORS = [ActiveRecord::Validations::PresenceValidator, ActiveModel::Validations::PresenceValidator]

  def presence_validated?(object, attribute)
    validators = object.class.validators
    validators.select! do |validator|
      PRESENCE_VALIDATORS.include?(validator.class) && validator.attributes.include?(attribute)
    end
    validators.any?
  end

  def flush_content_for(name)
    content_for name, flush: true do
      ""
    end
  end

  def options_with_labels(options, namespace)
    hash = {}
    options.each do |option|
      hash[option] = t([namespace, option].join("."))
    end
    hash
  end

  def if_present(string)
    string.present? ? string : nil
  end

  def model_key(form)
    form.object.class.name.pluralize.underscore
  end

  def labels_for(form, method)
    keys = [:placeholder, :label, :help, :options_help]
    path = [model_key(form), current_fields_namespace || :fields, method].compact
    Struct.new(*keys).new(*keys.map { |key| t((path + [key]).join("."), default: "").presence })
  end

  def options_for(form, method)
    # e.g. "scaffolding/completely_concrete/tangible_things.fields.text_area_value.options"
    path = [model_key(form), current_fields_namespace || :fields, method, :options]
    options = t(path.compact.join("."))
    return options unless options.is_a?(Hash)
    options.stringify_keys
  end

  def legacy_label_for(form, method)
    # e.g. 'scaffolding/things.labels.name'
    key = "#{model_key(form)}.labels.#{method}"
    #  e.g. 'scaffolding/things.labels.name' or 'scaffolding.things.labels.name' or nil
    t(key, default: "").presence || t(key.tr("/", "."), default: "").presence
  end

  def within_fields_namespace(namespace)
    @fields_namespaces ||= []
    @fields_namespaces << namespace
    yield
    @fields_namespaces.pop
  end

  def current_fields_namespace
    @fields_namespaces&.last
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
bullet_train-fields-1.14.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.13.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.12.3 app/helpers/account/forms_helper.rb
bullet_train-fields-1.12.2 app/helpers/account/forms_helper.rb
bullet_train-fields-1.12.1 app/helpers/account/forms_helper.rb
bullet_train-fields-1.12.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.11.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.10.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.9.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.8.5 app/helpers/account/forms_helper.rb
bullet_train-fields-1.8.4 app/helpers/account/forms_helper.rb
bullet_train-fields-1.8.3 app/helpers/account/forms_helper.rb
bullet_train-fields-1.8.2 app/helpers/account/forms_helper.rb
bullet_train-fields-1.8.1 app/helpers/account/forms_helper.rb
bullet_train-fields-1.8.0 app/helpers/account/forms_helper.rb
bullet_train-fields-1.7.23 app/helpers/account/forms_helper.rb
bullet_train-fields-1.7.22 app/helpers/account/forms_helper.rb
bullet_train-fields-1.7.21 app/helpers/account/forms_helper.rb
bullet_train-fields-1.7.20 app/helpers/account/forms_helper.rb
bullet_train-fields-1.7.19 app/helpers/account/forms_helper.rb