我一直在尝试通过remotipart和carrierwave上传图片。简单的fileupload工作正常,我还安装了remotipart gem,它可以通过ajax上传文件。现在的问题是如何通过ajax发送文件(我的意思是jquery部分)。
这就是我试图将文件发送到我的控制器的方法,但它无法正常工作
$("#upload").live("submit",function(e) {
e.preventDefault();
var report ={};
report.file =$("#new_upload").find('#upload_name').val();
$.ajax(this.action, {
data: report,
iframe: true,
processData: false
}).complete(function(data) {
console.log(data);
});
});
这是我的表单代码:
<%= form_for(@upload,:url => { :action => "save_remotipart" },:html => {:multipart => true },:remote => (params[:action] == true )) do |f| %>
<fieldset>
<legend class='required'>
Required fields
</legend>
<div class="field">
<%= f.label :name %><br />
<%= f.file_field :name %>
</div>
</fieldset>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
提交表单时没有参数发送到服务器。 在中止我得到了这个:
{"object Object"=>nil}
请帮帮我。
答案 0 :(得分:2)
您无需执行$(“#upload”)。live(){},添加:remote =&gt;对表单执行true将执行Ajax提交,并正确完成文件上传。
我在我的一个项目中使用它(见下面的表格代码)
<%= simple_form_for @post, :remote => true, :multipart => true do |f| %>
<%= f.input :content, :label => false, :input_html => { :rows => '2', :id => "ibtb" } %>
<%= f.input :file, :label => false %>
<%= f.button :submit, "Post" %>
<% end %>
我正在使用simple_form gem,但它也适用于普通表单,因为它们最终都会生成HTML。 gem的github页面中的示例也不使用simple_form。
希望这有帮助。
答案 1 :(得分:0)
我有同样的问题。按照这个链接,它可能会有所帮助。 http://www.javaroots.com/2015/04/asynchronous-file-uploads-in-rails.html#disqus_thread