ruby-on-rails - Rails flash 消息保留两个页面加载

标签 ruby-on-rails ruby

我在 Rails 应用程序中使用 flash 通知,代码如下:

flash[:notice] = "Sorry, we weren't able to log you in with those details."
render :action => :new

Flash 消息在"new"操作中按预期呈现,但随后它还会显示在用户访问的下一页(无论可能是什么)上。它应该只显示一次,但有些东西让它一直存在。

最佳答案

有两种方法可以解决这个问题:

一种是使用

flash.now[:notice]

当您的 flash 必须在当前请求结束时被丢弃并且不打算在重定向后使用时。

第二个是调用

flash.discard(:notice)

在请求的末尾。

标准的 flash 消息旨在为“下一个”请求保留。例如。您在处理创建或编辑请求时生成一个 flash,然后将用户重定向到显示屏幕。当浏览器向显示屏幕发出下一个请求时,将显示 flash。

如果您实际在显示屏幕上生成 flash,请使用 flash.now

Check the Ruby on Rails API documentation to see how the Flash hash works

关于ruby-on-rails - Rails flash 消息保留两个页面加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017210/

相关文章:

javascript - JSON.parse 无法从字符串创建对象

ruby-on-rails - Rubocop 在 Rails 中的蓝图序列化程序自定义字段中警告 SymbolProc

arrays - 将新值附加到 ruby​​ 中的现有 JSON 数组

ruby - 将 block 常量复制到模块中

ruby-on-rails - Bootstrap/Rails - 将 'close' 添加到 flash 通知

ruby-on-rails - Gitbash Windows 10 中的 Heroku 错误

ruby-on-rails - 不包括 Rails/Heroku/Assets

ruby-on-rails - rails : using helper methods from config

ruby-on-rails - gem install rails 不安装rails

ruby - 使用 stabby lambda 语法的 Symbol#to_proc 速记