Ruby on Rails AJAX文件上传

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby on Rails AJAX文件上传相关的知识,希望对你有一定的参考价值。

有没有简单的方法如何处理Rails中的AJAX文件上传?例如用插件

答案

当然有可能,here你有一个教程和一些插件的链接。

另一答案

如果您正在使用Rails 3,我编写了一个插件,使AJAX样式文件上传相对简单,无法实现。

http://rubygems.org/gems/remotipart

另一答案

JQuery File Upload是一个非常活跃的多功能文件上传小部件项目。

请参阅此处的演示:http://blueimp.github.com/jQuery-File-Upload/

这是宝石:http://rubygems.org/gems/jquery.fileupload-rails

维基也有Rails示例:https://github.com/blueimp/jQuery-File-Upload/wiki

另一答案

实际上并没有必要使用一些特殊的插件。最简单的方法是为我做ajax图片上传只是制作上传图片就像ajax一样的表格。为此,我使用ajaxForm jQuery插件:http://www.malsup.com/jquery/form/然后返回到js上传的图片并将其放到您的页面。

所以,你应该让你的表单成为ajaxForm:

$('#uploader').ajaxForm({dataType: "script",
         success: ajaxFormErrorHandler,
         error: ajaxFormSuccessHandler
}

控制器看起来像这样:

  def add_photo
    @photo = PhotosMeasurement.new(params[:user_photo])
    respond_to do |format|
      if @photo.save
         format.json { render :json =>  @photo}
      else
         format.json { render :json =>  nil}
      end
    end
  end

在ajaxForm成功处理程序中,您只需获取图片对象:

var photo = jQuery.parseJSON(responseText.responseText);

并将照片放在任何你喜欢的地方:

target.find('.addPhoto').before(''+
       '<input class="imageId" type="hidden" value='+photo.id+' > '+
       '<img src='+photo.photo.thumb.url+' alt="Thumb_1"> ');

P.S:不知道为什么,但如果你返回ajaxForm处理程序的东西,它处理该请求为ERROR而不是SUCCESS。

P.P.S:肯定jQuery-File-Upload插件可以提供更多,但是如果你不需要所有这些,你可以使用这种方式。

P.P.P.S:你应该已经有功能的非ajax文件上传了=)

另一答案

你可以使用Jquery Form

  • 下载jquery.form.min.js并将其放到vendor / assets / javascripts文件夹中
  • 在你的application.js // =需要jquery.form
  • 在您的视图中(haml示例): = form_for user,authenticity_token:true,:multipart => true,id:'user_form'do | f | = f.label:avatar,t(“user.avatar”) = f.file_field:头像,接受:'image / png,image / gif,image / jpeg' = f.submit t(user.new_record ??'add':'update'),class:'btn btn-primary',data:{disable_with:t(user.new_record??'adding':'updating')} :JavaScript的 $( '#user_form')。给ajaxForm()
  • 这里是Rails应用程序示例https://github.com/serghei-topor/ajax-file-upload-rails-sample

以上是关于Ruby on Rails AJAX文件上传的主要内容,如果未能解决你的问题,请参考以下文章

使用 AJAX 请求下载文件数据 - ruby​​ on rails 3

在 ruby​​ on rails 上重命名上传文件

ruby on rails nginx 如何上传大文件?

使用 ajax 刷新页面时,Ruby on Rails 失败

示例 - Ruby on Rails 6/7 的 Select2 多个 AJAX 代码(没有 Gem)

使用 React、Ruby on rails 5 和 CarrierWave 多次上传文件