2012-06-13 56 views
3

我正在提交form_for和file_field。当表单提交后,控制器回应一个.js文件,该文件将被执行。Rails form_for with file_field and remote => true and format =>:js

file_field是可选的。

当我上传一个文件时,js文件在一个新文档中打开(作为一个简单的文本文件)并且不执行js。当我没有上传任何文件时,响应div被更新。我希望更新成功通过响应div或独立于文件上传的失败消息进行通知。

这可能是出于某种安全原因?对于希望能够做到这一点的人有没有一些解决方法?

粗略地说,

形式部分_action.html.erb:

<div id="response"></div> 
<%= form_for ... :remote => true, :url => {..., :format => :js} do |f| %> 
    ... 
    <%= f.file_field :name %> 
<% end %> 

控制器::行动

if not request.post? 
    render :partial => 'controller/action' 
    return 
else 
    @response = "save was successful"; 
    # renders the action.js.erb 
end 

action.js.erb:

$("#response").html("<%= @response %>"); 
+6

以下解决方案的工作那是因为你无法通过AJAX提交文件。 – Wukerplank

回答

0

$('.sales_application_form').submit(function() { 
    $(this).ajaxSubmit(); 
    return false; 
    });