Ruby on Rails AJAX文件上传

时间:2009-09-04 13:19:28

标签: ruby-on-rails ajax file-upload

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

5 个答案:

答案 0 :(得分:19)

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

http://rubygems.org/gems/remotipart

答案 1 :(得分:7)

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

答案 2 :(得分:4)

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

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

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

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

答案 3 :(得分:0)

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

所以,你应该把你的表格变成ajaxForm:

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

controler看起来像这样:

  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

在ajaxFormSuccessHandler中你只需得到图片对象:

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文件=)

答案 4 :(得分:0)

您可以使用Jquery Form

  • 下载 jquery.form.min.js ,并将其放入 vendor / assets / javascripts 文件夹< / li>
  • 在您的 application.js
      

    // =需要jquery.form

  • 您认为的
  • (haml示例):

      

    =用户的form_,真实性令牌:true,:multipart => true,id:'user_form'做| f |

         

    = f.label:avatar,t(“ user.avatar”)

         

    = f.file_field:头像,接受:'image / png,image / gif,image / jpeg'

         

    = f。提交t(user.new_record??'add':'update'),         类:“ btn btn-primary”,数据:{disable_with:t(user.new_record??'adding':'updating')}

         

    :javascript

         

    $('#user_form')。ajaxForm()

  • 这是Rails应用示例https://github.com/serghei-topor/ajax-file-upload-rails-sample