2011-03-26 89 views
9

我在我的Rails应用程序中有一个反馈表单。反馈表单需要初始化@support变量,并且它应该在每个页面上都可见。初始化非常短:Rails中的全局变量

@support = Support.new(:id => 1) 

但是,如果将此变量初始化一次并从任何地方访问它将会很好。这可能怎么做?

回答

5

的全局变量开始与像多拉德符号“$”:

$support = Support.new(:id => 1) 

然而,全局变量是坏:-)你应该“西蒙娜Carletti酒店”读这post

12

您可以使用辅助方法(在应用程序控制器中)初始化支持变量。像这样:

class ApplicationController < .. 
    ... 
    helper_method :my_var 

    def my_var 
     @support = Support.new(:id => 1) 
    end 
    ... 

end 
+1

这肯定是要走的路。除了你需要它之​​外,它还有一个额外的好处,就是不需要执行过滤器,而之前的过滤器最终需要大量的过滤器或者即使你不需要它也可以调用。 – 2011-03-26 13:30:13

+0

谢谢Alan, 我不想迷惑读者!这就是为什么我没有进一步:) – hkairi 2011-03-26 16:25:54

5

而不是一个全局变量,你可能想把一些东西放在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