2009-09-04 18 views

cevap

7

Eklentisi ile here Muhtemelen bir eğiticiniz ve eklentilerle bağlantılarınız var.

19

Rails 3 kullanıyorsanız, AJAX stili dosya yüklemelerini uygulamak için nispeten önemsiz yapan bir eklenti yazdım.

http://rubygems.org/gems/remotipart

+0

Oldukça müthiş = o do için zaten işlevsel olmayan ajax dosya yükleme olmalıdır - Herhangi benzer prototip çözümleri biliyoruz? Bu gerçekten yararlı şeyler. –

+0

Herhangi bir Prototip stili çözüm bilmiyorum ama jQuery kodu uygulamak için çok önemsizdi Bunu değiştirmek zor olacağını hayal bile edemiyorum. Eğer yardım etmek isterseniz, Remotipart'ı github üzerinde çekinmeyin ve ben onu gövdeye birleştirelim. http://github.com/formasfunction/remotipart – leppert

+0

Bu yazıyı okuyanlara not edin: remotipart'ın önemli hataları vardır (örneğin: 2 yıldan beri bilinen çok sayıda alıntılanmış metinle çalışmaz) ve repo sahibi aktif olarak değil Bunu düzeltmeye çalışıyorum. Öyleyse, bunu uygulayarak saatlerimi (benim yaptığım gibi) uygulamaya koymadan önce, bunu başka bir çözümle değiştirerek düşünün. – Benj

0

Bunun için bazı özel eklentileri kullanmak gerçekten gerekli değil. ajax resim yüklemesini yapmanın en kolay yolu, sadece ajax gibi davranmak için resim yükleyen bir form oluşturmaktı. Bunun için ajaxForm jQuery eklentisini kullanıyorum: http://www.malsup.com/jquery/form/ js yüklenen resme dönüp sayfanıza koymadan.

Yani, form ajaxForm olması yapmalıdır:

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 

ve ajaxFormSuccessHandler içinde sadece resim nesnesini almak:

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

ve

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

Kontrolcü benziyor İstediğiniz yere fotoğraf koyun:

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

P.S: Nedenini gerçekten bilmiyorum ama ajaxForm işleyicisine bir şey döndürürseniz, bu isteği ERİŞİM BAŞARI olarak kabul etmez.

P.P.S: şüphesiz jQuery-Dosya Yükleme eklentisi daha fazlasını yapar, ancak bunlara ihtiyacınız yoksa, bu şekilde kullanabilirsiniz.

P.P.P.S:)