【发布时间】:2015-07-24 01:00:22
【问题描述】:
我们在 Rails 4.2 项目的 Devise 3.5.x 上设置了“超时”选项。当用户由于不活动而超时时,他们将被重定向到登录页面并打印以下 Flash 消息:
Your session expired. Please sign in again to continue.
true
“您的会话已过期...”flash 消息下方不需要的“true”似乎是我们的 flash 部分的结果:
<% flash.each do |key, value| %>
<% if !value.to_s.empty? %>
<%= content_tag(:div, value, :class => "flash #{key}") %>
<% end %>
<% end %>
我们注意到这可能不是迭代 Flash 消息的最佳方式。每当我们手动设置 flash 消息时,我们总是使用 flash[:notice] 或 flash.now[:notice](在渲染时)。有没有更好的方法来迭代我们部分中的闪存消息,以消除设计超时时的这种补充“真实”输出?如果是这样,由于我们不确定 Devise 等各种 gem 可能使用的 flash 消息的“类型”,我们应该检查哪些 flash 类型([:notice]、[:error]、[:warning])并迭代?
否则,由于站点范围内的所有其他 Flash 消息都正常工作,是否有任何已知方法可以简单地阻止 Devise 在超时时打印此补充“真”?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 devise