Parent

Methods

Class Index [+]

Quicksearch

ActionDispatch::Flash

The flash provides a way to pass temporary objects between actions. Anything you place in the flash will be exposed to the very next action and then cleared out. This is a great way of doing notices and alerts, such as a create action that sets flash[:notice] = "Post successfully created" before redirecting to a display action that can then expose the flash to its template. Actually, that exposure is automatically done. Example:

  class PostsController < ActionController::Base
    def create
      # save post
      flash[:notice] = "Post successfully created"
      redirect_to posts_path(@post)
    end

    def show
      # doesn't need to assign the flash notice to the template, that's done automatically
    end
  end

  show.html.erb
    <% if flash[:notice] %>
      <div class="notice"><%= flash[:notice] %></div>
    <% end %>

Since the notice and alert keys are a common idiom, convenience accessors are available:

  flash.alert = "You must be logged in"
  flash.notice = "Post successfully created"

This example just places a string in the flash, but you can put any object in there. And of course, you can put as many as you like at a time too. Just remember: They’ll be gone by the time the next action has been performed.

See docs on the FlashHash class for more details about the flash.

Constants

KEY

Public Class Methods

new(app) click to toggle source
     # File lib/action_dispatch/middleware/flash.rb, line 233
233:     def initialize(app)
234:       @app = app
235:     end

Public Instance Methods

call(env) click to toggle source
     # File lib/action_dispatch/middleware/flash.rb, line 237
237:     def call(env)
238:       if (session = env['rack.session']) && (flash = session['flash'])
239:         flash.sweep
240:       end
241: 
242:       @app.call(env)
243:     ensure
244:       session    = env['rack.session'] || {}
245:       flash_hash = env[KEY]
246: 
247:       if flash_hash
248:         if !flash_hash.empty? || session.key?('flash')
249:           session["flash"] = flash_hash
250:           new_hash = flash_hash.dup
251:         else
252:           new_hash = flash_hash
253:         end
254: 
255:         env[KEY] = new_hash
256:       end
257: 
258:       if session.key?('flash') && session['flash'].empty?
259:         session.delete('flash')
260:       end
261:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.