我的会话超时代码如下:
在sessions_controller中:
prepend_before_filter {request.env [“devise.skip_timeout”] = true}
在用户模型中:
设计:超时,:timeout_in => 2.minutes
application.html.erb:
<%=content_tag :div, msg, :class =>"flash_#{key}", :id => "app_flash"%>
如果我的会话过期,我会收到错误的“你的会话已经过期了......”来自设计错误,这很好。
但我在表单之外得到的额外错误为“true”,我将其视为 [:flash_timedout] 。
请帮助我如何禁用 true [:flash_timedout]?
答案 0 :(得分:3)
这是一个已知问题。您必须只显示:notice
和:alert
消息,或者从Devise文档中所述的Flash哈希中删除:timedout
密钥。
请参阅https://github.com/plataformatec/devise#configuring-controllers
答案 1 :(得分:0)
我能够禁用[:flash_timedout]
“真”并提供自定义错误。
我在部分消息中写了以下步骤:
<% 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 %>