class ActionDispatch::Flash::FlashHash
Public Class Methods
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 79 def self.from_session_value(value) flash = case value when FlashHash # Rails 3.1, 3.2 new(value.instance_variable_get(:@flashes), value.instance_variable_get(:@used)) when Hash # Rails 4.0 new(value['flashes'], value['discard']) else new end flash.tap(&:sweep) end
Public Instance Methods
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 117 def [](k) @flashes[k.to_s] end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 111 def []=(k, v) k = k.to_s @discard.delete k @flashes[k] = v end
Convenience accessor for flash[:alert]
.
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 218 def alert self[:alert] end
Convenience accessor for flash[:alert]=
.
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 223 def alert=(message) self[:alert] = message end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 150 def clear @discard.clear @flashes.clear end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 135 def delete(key) key = key.to_s @discard.delete key @flashes.delete key self end
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 actionpack/lib/action_dispatch/middleware/flash.rb, line 203 def discard(k = nil) k = k.to_s if k @discard.merge Array(k || keys) k ? self[k] : self end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 155 def each(&block) @flashes.each(&block) end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 146 def empty? @flashes.empty? end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 103 def initialize_copy(other) if other.now_is_loaded? @now = other.now.dup @now.flash = self end super end
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 actionpack/lib/action_dispatch/middleware/flash.rb, line 193 def keep(k = nil) k = k.to_s if k @discard.subtract Array(k || keys) k ? self[k] : self end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 131 def key?(name) @flashes.key? name.to_s end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 127 def keys @flashes.keys end
Convenience accessor for flash[:notice]
.
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 228 def notice self[:notice] end
Convenience accessor for flash[:notice]=
.
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 233 def notice=(message) self[:notice] = message end
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']
.
Also, brings two convenience accessors:
flash.now.alert = "Beware now!" # Equivalent to flash.now[:alert] = "Beware now!" flash.now.notice = "Good luck now!" # Equivalent to flash.now[:notice] = "Good luck now!"
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 185 def now @now ||= FlashNow.new(self) end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 142 def to_hash @flashes.dup end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 92 def to_session_value return nil if empty? {'discard' => @discard.to_a, 'flashes' => @flashes} end
Protected Instance Methods
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 238 def now_is_loaded? @now end
# File actionpack/lib/action_dispatch/middleware/flash.rb, line 242 def stringify_array(array) array.map do |item| item.kind_of?(Symbol) ? item.to_s : item end end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.