我在我的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