# class ActionDispatch::Flash::FlashHash

Implementation detail: please do not change the signature of the FlashHash class. Doing that will likely affect all Rails apps in production as the FlashHash currently stored in their sessions will become invalid.

### Public Instance Methods

[](k) click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 100
    def [](k)
      @flashes[k]
    end

alert() click to toggle source

Convenience accessor for flash

    # File lib/action_dispatch/middleware/flash.rb, line 195
    def alert
      self[:alert]
    end

alert=(message) click to toggle source

Convenience accessor for flash=

    # File lib/action_dispatch/middleware/flash.rb, line 200
    def alert=(message)
      self[:alert] = message
    end

clear() click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 131
    def clear
      @flashes.clear
    end

delete(key) click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 118
    def delete(key)
      @flashes.delete key
      self
    end

discard(k = nil) click to toggle source

Marks the entire flash or a single flash entry to be discarded by the end of the current action:

    flash.discard              # discard the entire flash at the end of the current action
    flash.discard(:warning)    # discard only the "warning" entry at the end of the current action

    # File lib/action_dispatch/middleware/flash.rb, line 173
    def discard(k = nil)
      use(k)
    end

each(&block) click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 135
    def each(&block)
      @flashes.each(&block)
    end

empty?() click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 127
    def empty?
      @flashes.empty?
    end

initialize_copy(other) click to toggle source
Calls superclass method

    # File lib/action_dispatch/middleware/flash.rb, line 87
    def initialize_copy(other)
      if other.now_is_loaded?
        @now = other.now.dup
        @now.flash = self
      end
      super
    end

keep(k = nil) click to toggle source

Keeps either the entire current flash or a specific flash entry available for the next action:

    flash.keep            # keeps the entire flash
    flash.keep(:notice)   # keeps only the "notice" entry, the rest of the flash is discarded

    # File lib/action_dispatch/middleware/flash.rb, line 165
    def keep(k = nil)
      use(k, false)
    end

key?(name) click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 114
    def key?(name)
      @flashes.key? name
    end

keys() click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 110
    def keys
      @flashes.keys
    end

notice() click to toggle source

Convenience accessor for flash

    # File lib/action_dispatch/middleware/flash.rb, line 205
    def notice
      self[:notice]
    end

notice=(message) click to toggle source

Convenience accessor for flash=

    # File lib/action_dispatch/middleware/flash.rb, line 210
    def notice=(message)
      self[:notice] = message
    end

now() click to toggle source

Sets a flash that will not be available to the next action, only to the current.

    flash.now[:message] = "Hello current action"

This method enables you to use the flash as a central messaging system in your app. When you need to pass an object to the next action, you use the standard flash assign (`[]=`). When you need to pass an object to the current action, you use `now`, and your object will vanish when the current action is done.

Entries set via `now` are accessed the same way as standard entries: `flash['my-key']`.

    # File lib/action_dispatch/middleware/flash.rb, line 157
    def now
      @now ||= FlashNow.new(self)
    end

to_hash() click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 123
    def to_hash
      @flashes.dup
    end

### Protected Instance Methods

now_is_loaded?() click to toggle source

    # File lib/action_dispatch/middleware/flash.rb, line 216
    def now_is_loaded?
      !!@now
    end

use(key = nil, used = true) click to toggle source

Used internally by the `keep` and `discard` methods

    use()               # marks the entire flash as used
    use('msg')          # marks the "msg" entry as used
    use(nil, false)     # marks the entire flash as unused (keeps it around for one more action)
    use('msg', false)   # marks the "msg" entry as unused (keeps it around for one more action)

Returns the single value for the key you asked to be marked (un)used or the FlashHash itself if no key is passed.

    # File lib/action_dispatch/middleware/flash.rb, line 227
    def use(key = nil, used = true)
      Array(key || keys).each { |k| used ? @used << k : @used.delete(k) }
      return key ? self[key] : self
    end