Rails:当"flash"哈希变空时?

Mis*_*hko 5 ruby-on-rails ruby-on-rails-3

在我的index页面上MyController设置一个值flash[:notice]:

class MyController < ApplicationController
  def index
    flash[:notice] = "my message"
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

我确实看到"my message"按预期显示.

但是,当我点击此页面上指向index页面的链接时MyOtherController,我仍然看到"my message":

class MyOtherController < ApplicationController
  def index
    puts "----------------------------------------"
    puts flash[:notice]    # => "my message"
    puts "----------------------------------------"
  end
end
Run Code Online (Sandbox Code Playgroud)

我认为flash[:notice]每次请求都会变空,但在这种情况并非如此.清空的正确方法是flash[:notice]什么?

小智 8

你可以flash.now[:notice] = ...改用.flash.now当您不希望Flash消息持续到下一个请求时非常有用.通常redirect_to遵循a flash[:notice] = ...,这就是为什么它被持久化为一个请求