2009-09-04 15 views

risposta

7

Sicuramente è possibile, here Hai un tutorial e un paio di link ai plugin.

19

Se si utilizza Rails 3, ho scritto un plug-in che rende gli upload di file in stile AJAX relativamente banali da implementare.

http://rubygems.org/gems/remotipart

+0

abbastanza impressionante - si fa a sapere di eventuali soluzioni prototipo simili? Questa è roba davvero utile. –

+0

Non conosco nessuna soluzione in stile prototipo, ma il codice jQuery è stato così semplice da implementare che non riesco a immaginare che sarebbe difficile da modificare. Se vuoi aiutare, sentiti libero di lanciare Remotipart su Github e io lo unisco nel bagagliaio. http://github.com/formasfunction/remotipart – leppert

+0

Nota a chi legge questo post: remotipart ha bug importanti (come: non funziona con più livelli di testo citato, che è noto da 2 anni) e il proprietario del repository non è attivo cercando di risolvere il problema. Consideralo quindi prima di sprecare ore (come ho fatto io) implementandolo e sostituendolo con un'altra soluzione. – Benj

0

non è davvero necessario usare alcuni plugin particolari per questo. Il modo più semplice per fare un upload di immagini Ajax per me è stato solo la forma che caricava le foto per comportarsi come ajax. Per questo io uso il plugin jQuery jajaxForm: http://www.malsup.com/jquery/form/ Quindi tornare a js immagine caricata e metterlo alla tua pagina.

Quindi, si dovrebbe rendere il vostro modulo sia ajaxForm:

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

controler sembra che:

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 

e in ajaxFormSuccessHandler si ottiene semplicemente oggetto immagine:

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

e metti la foto dove preferisci:

P.S: Non so davvero perché, ma se si restituisce a un gestore jaxForm qualcosa, gestisce tale richiesta come ERRORE non SUCCESSO.

P.P.S: sicuramente il plugin jQuery-File-Upload rende di più ma se non è necessario tutto ciò, è possibile utilizzare in questo modo.

P.P.P.S: si dovrebbe avere già funzionale upload di file non ajax per farlo =)