Sha256: 8cc4493384cd6681ee7b83630b2fe83acb18f2a269867545961ccf88e2fadb14

Contents?: true

Size: 1.89 KB

Versions: 38

Compression:

Stored size: 1.89 KB

Contents

module Effective
  module FlashMessages
    extend ActiveSupport::Concern

    # flash[:success] = flash_success(@post)
    def flash_success(resource, action = nil, name: nil)
      raise 'expected an ActiveRecord resource' unless (name || resource.class.respond_to?(:model_name))

      action ||= :save
      name ||= resource.class.model_name.human

      "#{name.to_s.titleize} was successfully #{action}#{(action.to_s == 'submit' ? 't' : '')}#{(action.to_s.end_with?('e') ? 'd' : 'ed')}"
    end

    # flash.now[:danger] = flash_danger(@post)
    def flash_danger(resource, action = nil, e: nil, name: nil)
      raise 'expected an ActiveRecord resource' unless resource.respond_to?(:errors) && (name || resource.class.respond_to?(:model_name))

      action ||= resource.respond_to?(:new_record?) ? (resource.new_record? ? :create : :update) : :save
      name ||= resource.class.model_name.human
      messages = flash_errors(resource, e: e)

      ["Unable to #{action} #{name.to_s.downcase}", (": #{messages}." if messages)].compact.join.html_safe
    end

    # flash.now[:danger] = "Unable to accept: #{flash_errors(@post)}"
    def flash_errors(resource, e: nil)
      raise 'expected an ActiveRecord resource' unless resource.respond_to?(:errors)

      messages = resource.errors.map do |attribute, message|
        if message[0] == message[0].upcase # If the error begins with a capital letter
          message
        elsif attribute == :base
          "#{resource.class.model_name.human.downcase} #{message}"
        elsif attribute.to_s.end_with?('_ids')
          "#{resource.class.human_attribute_name(attribute.to_s[0..-5].pluralize).downcase} #{message}"
        else
          "#{resource.class.human_attribute_name(attribute).downcase} #{message}"
        end
      end

      messages << e.message if messages.blank? && e && e.respond_to?(:message)

      messages.to_sentence.presence
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
effective_resources-0.8.13 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.12 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.11 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.10 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.9 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.8 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.7 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.6 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.5 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.4 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.3 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.2 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.1 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.8.0 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.7.13 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.7.12 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.7.11 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.7.10 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.7.9 app/controllers/concerns/effective/flash_messages.rb
effective_resources-0.7.8 app/controllers/concerns/effective/flash_messages.rb