我在我的Rails应用程序中有一个反馈表单。反馈表单需要初始化@support变量,并且它应该在每个页面上都可见。初始化非常短:Rails中的全局变量
@support = Support.new(:id => 1)
但是,如果将此变量初始化一次并从任何地方访问它将会很好。这可能怎么做?
我在我的Rails应用程序中有一个反馈表单。反馈表单需要初始化@support变量,并且它应该在每个页面上都可见。初始化非常短:Rails中的全局变量
@support = Support.new(:id => 1)
但是,如果将此变量初始化一次并从任何地方访问它将会很好。这可能怎么做?
这听起来像你真正想要的是将数据存储在用户的会话中,对吗?有关更多详细信息,请参阅http://www.ozmox.com/2009/10/13/rails-sessions/。
您可以使用辅助方法(在应用程序控制器中)初始化支持变量。像这样:
class ApplicationController < ..
...
helper_method :my_var
def my_var
@support = Support.new(:id => 1)
end
...
end
而不是一个全局变量,你可能想把一些东西放在ApplicationController中。
或者:
before_filter initialize_support
def initialize_support
@support = Support.new(:id => 1)
end
或者:
helper_method support_form
def support_form
@support_form ||= Support.new(:id => 1)
end
这肯定是要走的路。除了你需要它之外,它还有一个额外的好处,就是不需要执行过滤器,而之前的过滤器最终需要大量的过滤器或者即使你不需要它也可以调用。 – 2011-03-26 13:30:13
谢谢Alan, 我不想迷惑读者!这就是为什么我没有进一步:) – hkairi 2011-03-26 16:25:54