Rails:当“flash”哈希变空时?

时间:2011-01-31 07:33:04

标签: ruby-on-rails ruby-on-rails-3

index的{​​{1}}页面上,我将值设置为MyController

flash[:notice]

我确实看到class MyController < ApplicationController def index flash[:notice] = "my message" ... end end 按预期显示。

但是,当我点击此页面上指向"my message"的{​​{1}}页面的链接时,我仍然会看到index

MyOtherController

我认为"my message"在每次请求时都会变空,但在这种情况并非如此。清空class MyOtherController < ApplicationController def index puts "----------------------------------------" puts flash[:notice] # => "my message" puts "----------------------------------------" end end 的正确方法是什么?

2 个答案:

答案 0 :(得分:8)

您可以使用flash.now[:notice] = ...代替。当您不希望Flash消息持续到下一个请求时,flash.now非常有用。通常redirect_to跟在flash[:notice] = ...之后,这就是为什么它会被保留为一个请求

答案 1 :(得分:3)

大多数情况下,这条规则应该是正确的:

flash[:notice]redirect

一起使用

flash.now[:notice]render

一起使用