2010-10-20 45 views
0

在我的控制器中我試圖呈現香草JavaScript,但得到了意想不到的結果。這是代碼在Ruby中渲染香草JavaScript的問題

class UploadController < ApplicationController 

    def index 

     render :file => 'app\views\upload\uploadfile.rhtml' 

    end 

    def uploadFile 

     render :js => "alert('Hello Rails');" 

     post = DataFile.save(params[:upload]) 

    end 

end 

上午在執行之前預計後期= DataFile.save(PARAMS [:上傳]),我應該去看alertbox但我看到了下載框。可能是什麼問題呢?

+0

你確定你到達正確的路線嗎?你得到了什麼樣的錯誤? – 2010-10-20 12:09:38

+0

我沒有收到任何錯誤,但是當我試圖渲染渲染時:js =>「alert('Hello Rails');」 從我的探險 – 2010-10-20 12:16:51

回答

1

render :js將與MIME類型發送數據text/javascript 瀏覽器會看到這一點,並嘗試下載或顯示它(我的瀏覽器,鉻,顯示器.js文件明文。)

render :js真的想回一些將由該頁面上的代碼處理的JavaScript。

在本質上,你可以擁有jQuery的AJAX調用:

$.ajax({ 
    type: "POST", 
    url: "tokens/1/destroy.js", 
    data: { _method: 'DELETE', cell: dsrc.id } 
}); 

這是我的一個項目採取了一些代碼。在這裏,沒有定義dataType,所以jQuery智能地「猜測」返回什麼類型的數據。它看到它是MIME類型:text/javascript並執行它。如果我們要使用您的代碼,將會顯示一個警告對話框。

實質上,您需要加載一個頁面,頁面必須等待返回「vanilla JavaScript」。

如果您只是想爲該特定操作執行一些代碼,則只需在模板/視圖中使用javascript_tag包裝它,或者包含一個外部.js文件。

+0

羅比感謝越來越下載框,但你能不能幫我關於這個代碼(由我送),這是我對這個控制器 – 2010-10-20 13:42:32

+0

文件上傳

<%=的form_tag({:動作=> viwe「uploadFile '},:multipart => true)%>

:<%= file_field'upload','datafile'%>

<%= submit_tag「上傳」%> – 2010-10-20 13:42:58

+0

AMIT,我會建議查看一些處理javascript的railscasts:http://railscasts.com/episodes?search=RJS – Robbie 2010-10-20 19:34:39