2012-02-01 57 views
1

我有一個控制器有兩種方法:上傳和提交ActionDispatch實例是否不能存儲在類變量中?

我可以確保在調用提交之前執行上傳方法。

在上傳

,我有這樣的代碼:

def upload 
    @file = params[:avatar] 
    ... 
end 
在提交

,我有這樣的代碼:

def submit 
    ... 
    user.avatar = @file 
    ... 
end 

但似乎@file爲零。

我在哪裏錯了?....

我用Rails 3.2.0

回答

0

在控制器實例變量請求之間不存在。每個請求都會創建一個控制器類的新實例,因此您在upload中保存的@file會在upload完成時消失。然後,當有新的請求發送到您的submit方法時,Rails將創建一個新的控制器類實例,並在其上調用submit。既然你有兩個類的實例,你有兩套實例變量,它們不會共享你的@file

您必須爲@file安排被存儲在數據庫中,會話等形式請求,然後你的submit必須從以往任何時候都存儲在何處加載它,並把它分配給user.avatar之間。

+0

明白了!謝謝! – HanXu 2012-02-02 03:29:18

相關問題