【问题标题】:Remove flash message on refresh of page删除页面刷新时的闪烁消息
【发布时间】:2014-04-22 06:56:02
【问题描述】:

我正在使用 devise 登录,如果用户使用以下代码输入错误信息来显示 flash 消息,我已经覆盖了我的 devise 会话控制器并显示 flash 消息。

<% flash.each do |name, msg| %>
    <%= content_tag :section, msg, :id => "flash_#{name}", :class => " flash" %>
<% end %>

如果用户输入错误的电子邮件和密码,它会显示“无效的电子邮件或密码。”消息。

现在,如果我刷新页面,它仍然显示相同的 Flash 消息。 但是如果页面刷新,我希望删除 Flash 消息。请帮助我。

【问题讨论】:

  • 不知道devise,但在普通的Rails应用程序中,如果这条线flash[:notice] = "Invalid Email or Password"改为flash.now[:notice] = "Invalid Email or Password",那么它可以工作。
  • 谢谢帕万..但我正在寻找设计方法。

标签: ruby-on-rails ruby devise


【解决方案1】:

您可以在 flash.discard 显示后使用它。可能喜欢:

<% flash.each do |name, msg| %>
    <%= content_tag :section, msg, :id => "flash_#{name}", :class => " flash" %>
    <% flash.discard(name) %>
<% end %>

我还没有测试过,所以试试它是否有效。

【讨论】:

  • Devise 将 flash 消息设置为 flash[:key] 而不是 flash.now[:key]。后者仅显示当前请求的闪存消息。在stackoverflow.com/questions/19303878/… 中为您的问题提供了一些合理的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多