Ruby on rails Rails中的全局变量

Ruby on rails Rails中的全局变量,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在Rails应用程序中有一个反馈表。反馈表单需要初始化@support变量,并且它应该在每个页面上都可见。初始化非常短: @support = Support.new(:id => 1) 不过,最好将这个变量初始化一次,然后从任何地方访问它。这怎么可能呢?全局变量以美元符号“$”开头,如: $support = Support.new(:id => 1) 但是,全局变量是不好的:-)您应该阅读“Simone Carletti”的文章。听起来您真正想要的是在用户会话中存储数据,对

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

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

不过,最好将这个变量初始化一次,然后从任何地方访问它。这怎么可能呢?

全局变量以美元符号“$”开头,如:

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

但是,全局变量是不好的:-)您应该阅读“Simone Carletti”的文章。

听起来您真正想要的是在用户会话中存储数据,对吗?有关更多详细信息,请参阅。

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

class ApplicationController < ..
   ...
   helper_method :my_var

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

 end
类应用程序控制器<。。
...
helper\u方法:my\u var
def my_var
@support=support.new(:id=>1)
结束
...
结束

您可能希望在ApplicationController中放入一些内容,而不是一个全局变量

要么:

before_filter initialize_support

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


这绝对是一条路要走。它还有一个额外的好处,就是除非你需要它,否则不会被执行,而before过滤器最终会需要很多过滤器,甚至在你不需要它的时候也会被调用。谢谢Alan,我不想让读者感到困惑!这就是为什么我没有更进一步:)
helper_method support_form

def support_form
      @support_form ||= Support.new(:id => 1)
end