: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/
它需要一些额外的工作,但结果可能非常好!