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] - Time.now).to_i
unless @time_left > 0
reset_session
# TODO - This flash is never shown, because we redirect maybe?
flash[:error] = ''Your session has timed out, please login to
continue.''
redirect_to :controller => ''security'', :action
=> ''login'' and
return false
end
end
end
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?
Cheers.
--
Posted via http://www.ruby-forum.com/.
I don''t know if it''s relevant or not, but when i implemented the ''lightning fast javascript auto completion'' recipe, which involved using a controller 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. On 5/2/06, David <null@example.com> wrote:> > 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] - Time.now).to_i > unless @time_left > 0 > reset_session > # TODO - This flash is never shown, because we redirect maybe? > flash[:error] = ''Your session has timed out, please login to > continue.'' > redirect_to :controller => ''security'', :action => ''login'' and > return false > end > end > end > > 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? > > Cheers. > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060502/e36cac02/attachment.html
how to handle multiple flash keys (See related posts)
posted by Scott Raymond 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
end
...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 flash[:notice],
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;
}
David wrote:> 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] - Time.now).to_i
> unless @time_left > 0
> reset_session
> # TODO - This flash is never shown, because we redirect maybe?
> flash[:error] = ''Your session has timed out, please login
to
> continue.''
> redirect_to :controller => ''security'', :action
=> ''login'' and
> return false
> end
> end
> end
>
> 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?
>
> Cheers.
>
>