Forum: Ruby on Rails flash[] not shown

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
David (Guest)
on 2006-05-02 16:36
I am using the following code (inspired by one of the books) to check if
the user's session should have timed out.

  # Check to see if the user has been inactive for longer than the
  # expiry period.  If they have, reset the session.
  def check_timeout
    if session[:expires_at] != nil
      @time_left = (session[:expires_at] -
      unless @time_left > 0
        # TODO - This flash is never shown, because we redirect maybe?
        flash[:error] = 'Your session has timed out, please login to
        redirect_to :controller => 'security', :action => 'login' and
return false

However, the flash is never shown.  The view includes the correct code
and a flash is shown if the user enters an incorrect username/password.
At one point, the flash did work (before I changed some code) but I have
no idea what actually broke it.

The same happens for the logout event, which simply calls reset_session,
sets the flash then redirects as above (in that order, so I'm not wiping
the flash out from the session I hope).

Is there any reason that the flash wouldn't be shown?

Larry W. (Guest)
on 2006-05-03 20:59
(Received via mailing list)
I don't know if it's relevant or not, but when i implemented the
fast javascript auto completion' recipe, which involved using a
action to load a javascript file, that action ate my flash before it got
where it was supposed to go - the next 'real' action.

I had to put a flash.keep statement in that action so that the contents
would survive til the next real load.
Charles L. (Guest)
on 2006-05-03 20:59
(Received via mailing list)
how to handle multiple flash keys (See related posts)
posted by Scott R. on rails list

I generally like to add something like this to my application_helper.rb:

def flash_div *keys
  keys.collect { |key| content_tag(:div, flash[key],
                                   :class => "flash_#{key}") if
flash[key] }.join

...and then this in the <body> section of layouts/application.rhtml:

<%= flash_div :warning, :notice %>

Now, if my controller puts anything into flash[:warning] or
they'll render like:

<div class="flash_warning">Warning here</div>
<div class="flash_notice">Notice here</div>

Handling the CSS styling

.flash_notice {
    color: green;
    font-size: 8pt;
This topic is locked and can not be replied to.