:remote => true在表单中使用文件上传器时不起作用

基本上,当我在表单中包含并使用文件上传器时,它似乎取消了:remote => truefunction,并将操作作为HTML代替JS处理。 有任何想法吗?

我刚刚面临同样的问题,并找到了以下替代方案来使其工作:

Gem remotipart => http://www.alfajango.com/blog/rails-3-ajax-file-uploads-with-remotipart/

jQuery插件’jaxy’=> https://github.com/adamlogic/jquery-jaxy

我想我更喜欢第一种选择。 但是有选择权是件好事。 =)

你不能通过AJAX上传文件,所以显然你的请求是纯HTML,因为你没有特定的东西:js和rails认为它只是一个简单的HTML POST请求。

https://github.com/JangoSteve/remotipart

gem 'remotipart', '~> 1.2' 

然后bundle install

 //= require jquery.remotipart 

sample_layout.html.erb

 <%= form_for @sample, :html => { :multipart => true }, :remote => true do |f| %> 
<%= f.label :file %> <%= f.file_field :file %>
<%= f.submit %>
<% end %>

在控制器中

 def create respond_to do |format| if @sample.save format.js end end end 

create.js.erb

 // Display a Javascript alert alert('success!'); <% if remotipart_submitted? %> alert('submitted via remotipart') <% else %> alert('submitted via native jquery-ujs') <% end %> 

AJAX图像上传不起作用,至少不是标准方式。

有更新的HTML5技术可以使用它,并使用变通

有一个很棒的库可以使用进度表执行多个文件ajax上传,并根据浏览器降级以使用不同的技术。

AJAX上传库: http : //valums.com/ajax-upload/

它需要一些额外的工作,但结果可能非常好!