2009-09-04 119 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文件上傳的做=)