planetargon / flash-message-conductor

A simple pattern for managing flash messages in your Ruby on Rails application.

This URL has Read+Write access

flash-message-conductor / lib / flash_message_conductor.rb
100644 48 lines (41 sloc) 1.219 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# ArgonHelpers
 
module PlanetArgon
  module FlashMessageConductor
    FLASH_MESSAGE_TYPES = [ :error, :notice, :message ]
    
    module ControllerHelpers
      def add_error(msg)
        flash[:error] = msg
      end
 
      def add_notice(msg)
        flash[:notice] = msg
      end
 
      def add_message(msg)
        flash[:message] = msg
      end
    end
  
    module ViewHelpers
      def render_flash_message( css_class, message = "" )
        return "" if message.nil? or message.blank?
        content_tag( "p", message, :class => "#{css_class}" )
      end
    
      def render_flash_messages( div_id = "flash_messages", div_class = "" )
        div_content = ''
        FLASH_MESSAGE_TYPES.each do |key|
          div_content << render_flash_message( key.to_s, flash[key] ) unless flash[key].blank?
        end
        if div_content.blank?
          return ""
        else
          return content_tag( 'div', div_content, :id => div_id, :class => div_class )
        end
      end
      
      def flash_message_set?
        flash_set = false
        FLASH_MESSAGE_TYPES.each do |key|
          flash_set = true unless flash[key].blank?
        end
        return flash_set
      end
    end
  end
end