2011-05-14 88 views
0

因此,我使用帶回形針gem的:remote => true表單上傳照片。當我提交表單時,我只想刷新一個div的內容(現在將包含上傳的照片)。我想在表單提交後刷新div內容

但是,Rails堅持將我重定向到用於處理照片提交的操作路徑。此外,實際上刷新div的問題。

我想用javascript來做,但沒有afterSubmit處理程序或任何東西。我無法弄清楚如何迴應表單提交與JavaScript或者。我試圖做

def add_photo 
    SomeModel.method_that_processes_and_saves(params) 
    respond_to do |format| 
    format.js 
    end 
end 

並將腳本放在add_photo.js.erb。然而,腳本從來沒有發送(瀏覽器是要求html?)我怎樣才能解決這個問題?它讓我一整天都感到沮喪。

回答

0
def add_photo 
    SomeModel.method_that_processes_and_saves(params) 
    respond_to do |format| 
    format.js{ render :update do |page| 
     page << "$('#mydiv').html('bah-blah') " 
    end 
end 

或創建add_photo.js.erb並寫有任何你想要的JavaScript。

如果你提交通過AJAX(JS請求)的形式將工作,這意味着你應該添加

+0

的唯一的事情是,即時通訊使用回形針上傳文件:remote => true選項和JavaScript不能碰文件系統。會發生什麼情況是瀏覽器請求html響應並忽略遠程。我目前正在嘗試使用iframe來解決這個問題,現在的問題是如何讓控制器發回腳本,以便可以執行並影響頁面本身。 – providence 2011-05-14 05:37:23

+0

這裏有一堆關於通過AJAX上傳文件的文章,在網絡上使用Rails – fl00r 2011-05-14 05:54:27

+0

上傳本身和ifram一起工作正常,主要問題是瀏覽器想要在上傳之後執行某些操作。我設法使用JavaScript超時來模仿'提交後'處理程序。 – providence 2011-05-14 06:21:27

0

沒有「afterSubmit」的概念,因爲頁面已被表單提交替換。解決這個問題的最簡單方法是在後續頁面上處理照片上傳。 Ruby應該給你路徑。 另一種方法是使用衆多上傳庫之一來異步執行上傳,併爲您提供「完整」回調。 http://www.uploadify.com/是一個熱門的選擇。