flash_timedout = "true" when user session expires in rails using devise

Viewed 1992

My code for session time out is as follows:

In sessions_controller:

prepend_before_filter { request.env["devise.skip_timeout"] = true }

In user model:

devise :timeoutable, :timeout_in => 2.minutes

application.html.erb:

<%=content_tag :div, msg, :class =>"flash_#{key}", :id => "app_flash"%>

If my session expires, i am getting an error "Your session has expired..." from devise errors which is fine.

But i am getting extra error outside the form as "true" where i inspect it as [:flash_timedout].

Please help me how to disable this true [:flash_timedout] ?

2 Answers

I was able to disable [:flash_timedout] "true" and provide customized error.

I wrote below steps in my message partial:

  <% if flash[:timedout] && flash[:alert] %>
    <% flash.keep(:timedout) %>
    <% flash.keep(:alert) %>
    <div class = "alert alert-danger">
      Your session expired. Please sign in again to continue.
    </div>
  <% else %>
    <% flash.each do |name, message| %>
      <div class = "alert alert-<%= message.include?('Invalid') ? 'danger' : 'success'%>">
       <ul>
          <%= message %>
       </ul>
      </div>
    <% end %>
  <% end %>
Related