2009-09-04 38 views

回答

7

当然这是可能的,here你链接到插件的教程和夫妇。

19

如果您使用Rails 3中,我写了一个插件,使AJAX风格的文件上传比较容易实现。

http://rubygems.org/gems/remotipart

+0

相当真棒 - 你知道的任何类似的原型解决方案?这是非常有用的东西。 –

+0

我不知道任何Prototype样式的解决方案,但jQuery代码太实用了,我无法想象它很难修改。如果您想提供帮助,请随时在github上分发Remotipart,然后将其合并到主干中。 http://github.com/formasfunction/remotipart – leppert

+0

注意那些阅读这篇文章:remotipart具有重要的错误(如:不加引号的文字,其中由于2-年内已知的多级工作)和回购业主不积极试图解决这个问题。所以在浪费时间(像我这样做)之前考虑这个,然后用另一个解决方案替换它。 – Benj

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处理的东西,它处理该请求的错误不是成功。

P.P.S:肯定jQuery的文件上传插件,使更多的,但如果你并不需要所有的,你可以使用这种方式。

P.P.P.S:您应该已经功能性非AJAX文件上传的做=)