Rails form_for with file_field和remote => true和format => :JS

时间:2012-06-13 05:34:16

标签: ruby-on-rails ajax ruby-on-rails-3.1 form-for ujs

我正在提交一个带有file_field的form_for。当使用帖子提交表单时,控制器将使用将执行的.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 %>");

2 个答案:

答案 0 :(得分:4)

尝试使用remotipart gem https://github.com/JangoSteve/remotipart

答案 1 :(得分:0)

以下解决方案为我工作

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