2012-01-02 57 views
3

我有一個ChatController@user變量。在主頁上,我顯示@user.name。我也銷燬並創建了與Ajax一起工作的方法,因此當我從我的聊天中刪除郵件時,@user變爲零。爲了防止在無對象上調用name的問題,我可以將@user=User.find_by_id(:user_id)添加到每個方法。但如果我有很多方法,這會變得乏味。我可以聲明@user=User.find_by_id(:user_id)一次並幹起我的代碼嗎?導軌中的全局控制器變量

+0

您的實例變量將會持續一個請求,您可以使用before過濾器來保存重複。 – 2012-01-02 18:24:44

+0

@Berlin謝謝你的回覆..我只問你有沒有。 – 2015-05-08 08:29:52

回答

7

是的,這是在before_filterDocumentation)中完成的。

喜歡的東西:

class ChatController < ActionController::Base 
    before_filter :find_user 


    private 
    def find_user 
    @user ||= User.find_by_id(params[:user_id]) 
    end 
end 

您也可以考慮使用Inherited Resources其自動執行此爲您服務。

+0

它完美的作品!謝謝 – Berlin 2012-01-02 18:31:45

+0

@柏林 - 確保你接受你選擇的答案。 – AndrewF 2012-01-02 18:34:54

+0

這是青春之一! – Berlin 2012-01-02 18:38:40