Sha256: 98c0e4593ead975665f32754676ab17085bce74d5fc6583a118eeac66d9f95fc

Contents?: true

Size: 1.13 KB

Versions: 11

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true
module SimpleForm
  class ErrorNotification
    delegate :object, :object_name, :template, to: :@builder

    def initialize(builder, options)
      @builder = builder
      @message = options.delete(:message)
      @options = options
    end

    def render
      if has_errors?
        template.content_tag(error_notification_tag, error_message, html_options)
      end
    end

    protected

    def errors
      object.errors
    end

    def has_errors?
      object && object.respond_to?(:errors) && errors.present?
    end

    def error_message
      (@message || translate_error_notification).html_safe
    end

    def error_notification_tag
      SimpleForm.error_notification_tag
    end

    def html_options
      @options[:class] = "#{SimpleForm.error_notification_class} #{@options[:class]}".strip
      @options
    end

    def translate_error_notification
      lookups = []
      lookups << :"#{object_name}"
      lookups << :default_message
      lookups << "Please review the problems below:"
      I18n.t(lookups.shift, scope: :"simple_form.error_notification", default: lookups)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
simple_form-5.3.0 lib/simple_form/error_notification.rb
simple_form-5.2.0 lib/simple_form/error_notification.rb
simple_form-5.1.0 lib/simple_form/error_notification.rb
simple_form-5.0.3 lib/simple_form/error_notification.rb
simple_form-5.0.2 lib/simple_form/error_notification.rb
simple_form-5.0.1 lib/simple_form/error_notification.rb
simple_form-5.0.0 lib/simple_form/error_notification.rb
simple_form-4.1.0 lib/simple_form/error_notification.rb
simple_form-4.0.1 lib/simple_form/error_notification.rb
simple_form-4.0.0 lib/simple_form/error_notification.rb
simple_form-3.5.1 lib/simple_form/error_notification.rb