2011-03-26 117 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