Sha256: 3c81585c3ece3d5a8415ca2a3d8ae232fad2c25e8a213cbc7ba765645542ccac

Contents?: true

Size: 1.73 KB

Versions: 16

Compression:

Stored size: 1.73 KB

Contents

# frozen_string_literal: true

class PgFormBuilder < SimpleForm::FormBuilder
  include PgAssociable::FormBuilderMethods
  include PgEngine::ErrorHelper

  def default_prefix(attribute_name)
    at_name = object.class.human_attribute_name(attribute_name.to_s).downcase
    "#{articulo(attribute_name)} #{at_name}"
  end

  def articulo(attribute_name)
    gender = I18n.t("gender.#{attribute_name}", default: nil)
    if gender.present?
      gender == 'f' ? 'La' : 'El'
    else
      at_name = object.class.human_attribute_name(attribute_name.to_s).downcase
      at_name.ends_with?('a') ? 'La' : 'El'
    end
  end

  def input(attribute_name, options = {}, &)
    options[:error_prefix] ||= default_prefix(attribute_name)

    super(attribute_name, options, &)
  end

  def mensajes_de_error
    base_errors = object.errors[:base]
    base_message = (base_errors.map(&:to_s).join('<br>') if base_errors.present?)
    title = error_notification(message: mensaje, class: 'text-danger mb-2') if mensaje
    base_tag = error_notification(message: base_message, class: 'alert alert-danger') if base_message
    (title || '') + (base_tag || '')
  end

  def mensaje
    scope = error_message_for(object, associations:)
    return if scope.blank?

    I18n.t("simple_form.error_notification.#{scope}")
  end

  def associations
    object.class.reflect_on_all_associations
          .select { |a| a.instance_of? ActiveRecord::Reflection::HasManyReflection }
          .map(&:name)
  end

  map_type :date, to: PgEngine::FechaInput
  # map_type :datetime, to: PgEngine::FechaInput

  def submit_button(*args, &)
    options = args.extract_options!.dup
    options[:class] = ['btn-primary', options[:class]].compact
    args << options
    send(:submit, *args, &)
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
pg_rails-7.0.8.pre.alpha.26 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.25 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.24 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.23 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.22 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.21 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.20 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.19 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.18 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.17 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.16 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.15 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.14 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.13 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.12 pg_engine/app/lib/pg_form_builder.rb
pg_rails-7.0.8.pre.alpha.11 pg_engine/app/lib/pg_form_builder.rb