'flash'属于哪里?

时间:2013-09-01 02:48:29

标签: ruby-on-rails ruby

下面第四行设置flash,这是FlashHash个实例。

class LoginsController < ApplicationController
  def destroy
    session[:current_user_id] = nil
    flash[:notice] = "You have successfully logged out."
    redirect_to root_url
  end
end

FlashHash实例属于哪里?如果它是一个全局变量,它应该以{{1​​}}开头,如果它是Application Controller或其超类的成员变量,名称应该以{{1​​}}开头,对吗?它只是在“destroy”函数中创建的局部变量吗?

1 个答案:

答案 0 :(得分:2)

如果您阅读了Rails的源代码,您会发现flashActionDispatch::Request的方法,ActionController::Base有一个Flash模块,可以委派{{1}来自flash的方法,因此Request是一种方法,而且来自会话,所以它不需要'$'或'@'。

在ActionDispatch :: Request

flash

在ActionController :: Flash

# File actionpack/lib/action_dispatch/middleware/flash.rb, line 6
def flash
  @env[Flash::KEY] ||= Flash::FlashHash.from_session_value(session["flash"])
end