2009-06-19 33 views
59

我使用闪光灯通知Rails应用程序中,用下面的代码:Rails的提示信息仍然是两页的负荷

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

上的“新”行动,预计闪光灯消息呈现,但随后它也会在下一页显示用户访问(不管可能是什么)。它应该只显示一次,但有些东西会让它停留。

回答

116

有两种方法可以解决这个问题。 一种是使用

flash.now[:notice] 

当你的闪光灯必须在当前请求结束被丢弃,并且不打算重定向后使用。

第二个是调用

flash.discard(:notice) 

在请求的结束。 哪一个最好取决于您的应用程序行为。

http://api.rubyonrails.org/classes/ActionDispatch/Flash/FlashHash.html

+1

1,并进一步解释行为,标准闪存消息旨在被保持在对于“下一个”请求。例如。您在处理创建或编辑请求时生成闪光灯,然后将用户重定向到显示屏幕。当浏览器向显示屏幕发出下一个请求时,会显示闪光灯。如果您实际上在显示屏幕上生成了闪光灯,请使用flash.now – asc99c 2011-10-24 10:13:15

14

好的,我解决了这个问题。解决它的方法是使用:

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

关键部分是flash.now [:notice]而不是flash [:notice]。