将变量传递到rails中的多个控制器

时间:2011-02-19 23:40:53

标签: ruby-on-rails

我希望变量@user能够在所有其他控制器上访问。我该怎么做呢。

4 个答案:

答案 0 :(得分:1)

这是一个例子

Class User

  def self.current=(u)
    @current_user = u
  end

  def self.current
    @current_user
  end

end

您必须在某处设置User.current =,例如在应用程序控制器中。

然后在另一个模型或控制器中调用User.current

答案 1 :(得分:0)

每次调用动作之间都会销毁变量。

您必须每次重新实例化@user

要使其清洁,您可以在before_filter

中执行此操作

答案 2 :(得分:0)

如果您想要当前用户(例如),您可以在模型中创建一个方法/函数并调用它。

答案 3 :(得分:0)

您可能希望在ApplicationController中使用current_user函数,例如:

def current_user
  @current_user ||= User.find( session[:user_id] ) if session[:user_id].present?
end
helper_method :current_user

您现在可以从所有控制器和视图中调用current_user。 @ Intrepidd的方法也很酷。