2009-09-04 14 views

उत्तर

7

निश्चित रूप से यह संभव है, here आपके पास प्लगइन के लिए एक ट्यूटोरियल और लिंक हैं।

19

यदि आप रेल 3 का उपयोग कर रहे हैं, तो मैंने एक प्लगइन लिखा है जो AJAX शैली फ़ाइल को लागू करने के लिए अपेक्षाकृत मामूली अपलोड करता है।

http://rubygems.org/gems/remotipart

+0

सुंदर भयानक है - आप किसी भी इसी तरह प्रोटोटाइप समाधान के पता है? यह वास्तव में उपयोगी सामान है। –

+0

मुझे किसी भी प्रोटोटाइप शैली समाधान के बारे में पता नहीं है लेकिन jQuery कोड लागू करने के लिए इतना छोटा था, मैं कल्पना नहीं कर सकता कि इसे संशोधित करना मुश्किल होगा। अगर आप मदद करना चाहते हैं, तो जिथब पर फोर्क रीमोटिपर्ट को मुक्त महसूस करें और मैं इसे ट्रंक में विलय कर दूंगा। http://github.com/formasfunction/remotipart – leppert

+0

इस पोस्ट को पढ़ने वाले लोगों को ध्यान दें: रीमोटिपर्ट में महत्वपूर्ण बग हैं (जैसे: उद्धृत पाठ के कई स्तरों के साथ काम नहीं करना, जो 2 साल से ज्ञात है) और रेपो स्वामी सक्रिय रूप से सक्रिय नहीं है इसे ठीक करने की कोशिश कर रहा है। तो इससे पहले कि आप घंटों को बर्बाद कर लें (जैसे मैंने किया) इसे लागू करने से पहले इसे एक और समाधान के साथ बदल दें। – Benj

4

JQuery फाइल अपलोड बहुत सक्रिय और बहुमुखी फाइल अपलोड विजेट परियोजना है। http://blueimp.github.com/jQuery-File-Upload/

यहाँ एक रत्न है::

डेमो यहाँ देखें http://rubygems.org/gems/jquery.fileupload-rails

विकि भी रेल उदाहरण है: https://github.com/blueimp/jQuery-File-Upload/wiki

0

यह वास्तव में उस के लिए कुछ विशेष प्लगइन का उपयोग करने के लिए आवश्यक है। मेरे लिए AJAX चित्र अपलोड करने का सबसे आसान तरीका सिर्फ फॉर्म बना रहा था जो चित्रों को AJAX की तरह कार्य करने के लिए अपलोड करता था। इसके लिए मैं AJAXForm jQuery प्लगइन का उपयोग करता हूं: http://www.malsup.com/jquery/form/ जेएस अपलोड की गई तस्वीर पर वापस जाने और इसे अपने पृष्ठ पर डालने से पहले।

तो, आप अपने प्रपत्र ajaxForm हो बनाना चाहिए:

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); 

और

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

controler कि तरह लग रहा है जहां भी आप चाहें फोटो डाल दें:

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

पीएस: वास्तव में नहीं पता कि क्यों, लेकिन अगर आप AJAXForm हैंडलर पर वापस आते हैं, तो यह अनुरोध को सफलता के रूप में संभालता है।

पीपीएस: निश्चित रूप से jQuery-फ़ाइल-अपलोड प्लगइन अधिक बनाता है लेकिन यदि आपको इसकी आवश्यकता नहीं है, तो आप इस तरह से उपयोग कर सकते हैं।

P.P.P.S: आप पहले से ही कार्यात्मक गैर ajax फाइल अपलोड करना चाहिए था के लिए है कि =)

संबंधित मुद्दे