2011-07-30 25 views
0

我需要存儲在一個變量從數據庫中的值,我需要從我的控制器的所有動作訪問這個變量。Rails 3 - 控制器中的構造函數?

例如,我有控制器home,其具有3個動作:

  • 接觸
  • 博客

我試圖值存儲到一個變量中application_controller.rb,但這不起作用。
我該怎麼做?

+1

你說的是堅持一個值,控制器和行動就像一個分享currently_logged_in_user?對不起,我努力理解你的英語 – jamesc

+0

是的,像你寫 – user1946705

+0

好吧,我將添加我的答案 – jamesc

回答

2

這是關於持久性。爲了解決這個事實,網站是無狀態的,你可以通過將數據存儲在cookie中來保存數據。 Rails爲您提供了一種稱爲會話哈希的簡便方法。 您還可以使用閃光燈哈希(這也是一個會話哈希) ,在您獲得您希望存儲值的點只需撥打

session[:some_variable] = some_variable 

然後,當你想要檢索該變量只是調用

some_variable = session[:some_variable] 

更換some_variable用的東西,對你有意義

如果你想要爲所有控制器的操作做到這一點那麼的before_filter可能是有用的 這裏閱讀約before_filters http://apidock.com/rails/ActionController/Filters/ClassMethods/before_filter

不要存放大量的對象或會話中的對象的數組。如果你需要保持一個active_record對象的引用,然後保存記錄的僅僅是ID,那麼你可以檢索紀錄,當你需要它的發現

1

如果你想訪問特定的變量在所有的控制器,只要做到以下幾點。

進入應用控制器:

before_filter :set_my_variables 

private 
def set_my_variables 
    @variable = MyModel.find(YOUR_CONDITION) 
end 

並且例如,在你的家控制器,你將能夠訪問@Variable。

希望這會有所幫助。

+0

我認爲這個問題是關於持久性將涉及使用會話。 – jamesc

+0

呀,我不明白他的問題......:/ – Arkan