让闪存哈希通过redirect保持
我的基本用例是做一些处理,设置flash[:notice]
,然后redirect到一个新的页面。 从我可以告诉,redirect重置闪存标签(请纠正我,如果我错了)。 有办法获得持久性吗? 使用会话不是一个选项,我用cookies破解了这个问题,但是我认为应该有一个更好的方法。
闪存散列持续一个redirect或渲染。 所以你应该罚款的默认设置。
如果您需要保留另一个请求/redirect的闪存散列,则可以调用flash.keep。
flash.keep # keep the entire flash hash around for an extra request. flash.keep(:notice) # keep just flash[:notice] for an extra request.
至less在Rails v3.2.1中需要注意的一点是,如果Flash根本没有被引用,那么通过redirect将会持续存在,通过至less1次redirect并在之后加载相同的视图。 这是我最近经历的一个伪代码:
def some_action (code that may set a flag to redirect 1 time) redirect_to action_path if(redirect_flag) .... end
不piperedirect如何运行,都会导致flash [:message]出现。
def some_action logger.debug("Flash[:message] #{flash[:message]}") (code that may set a flag to redirect 1 time) redirect_to action_path if(redirect_flag) .... end
在使用logging器引用flash []的debugging过程中,只有当redirect没有发生时才会显示。 如果您在redirect之前添加了对闪存的引用,并且没有明显原因将其丢失,则可以看到这是有问题的。
在这里看到ruby文档(实例保护的方法:在底部使用)