【发布时间】:2011-03-04 09:54:27
【问题描述】:
我正在使用 Ruby on Rails 3,并且我正在尝试使用中间件来设置变量 @variable_name 稍后在控制器中可访问。
例如我的中间件是
class Auth
def initialize(app)
@app = app
end
def call(env)
@account ||= Account.find(1)
@app.call(env)
end
end
上面的代码正确设置了@account 变量,但这在我的应用程序中不可用(在控制器、模型、视图......)。那么,我怎样才能做到这一点?
我看到this answer 这是一种满足我需要的方法,但我希望@account 变量“可直接访问”。也就是说,不使用那种方式,而是提供它,例如在我看来,像这样:
<%= debug @account %>
【问题讨论】:
-
我不认为这可以在中间件中完成。您在
ApplicationController和before_filter :set_my_var中尝试过吗? -
@Wukerplank 我在中间件中需要它。
-
您可以尝试一些肮脏且可能有害的东西,例如将其存储在
Thread.current[:my_var] = Account.find(1)。
标签: ruby-on-rails ruby ruby-on-rails-3 variables middleware