【问题标题】:Devise 3.5.x on Rails 4.2.x timeout prints "true" underneath timeout flash message在 Rails 4.2.x 上设计 3.5.x 超时在超时闪烁消息下方打印“true”
【发布时间】: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


    【解决方案1】:

    我知道这是一个迟到的回复,但这就是我所做的。

    flash.each do |msg_type, message|
      unless msg_type.to_s == 'timedout'
      <!-- Carry on printing messages -->
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 2012-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 2012-05-04
      相关资源
      最近更新 更多