2010-10-20 41 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