Upload di file in Ajax
L’upload di file in Ajax crea problemi, per aggirarli potete utilizzare il plugin RespondsToParent. In poche parole il responds_to_parent consente al controllore di fare il respond dei parent document delle vostre pagine.
Praticamente il post del form viene fatto in un iframe e recuperato poi nel controllore tramite RJS usando il plugin.
Magari con un esempio si capisce meglio: supponiamo di voler fare l’upload di un’ immagine si prepara quindi un parziale nel quale c’è l’elenco delle immagini e il form per fare l’upload:
1 Immagini 2 3 4 5 6 7 10 11 12 13 14 15 16
E’ stato inserito un iframe usato come target dal form. Nel vostro controllore dovete mettere la funzione upload:
1 2 resource = Resource.create(params[:resource]) 3 responds_to_parent do 4 render :update do |page| 5 page.insert_html(:bottom, "picture-list", 6 :partial => "/resource/picture", 7 :object => resource) 8 end 9 end 10 end
Così si inserisce la risorsa e si visualizza in RJS.
Chiaramente il Resource.create(params[:resource]) lo dovete implementare.


Attenzione, che non funziona sempre, sopratutto nel tuo esempio, ovvero, se il partial è complesso o contiene caratteri strani il regex che fa respond to parent da problemi.
Quindi in genere dopo:
render update do |page|
#si fa un semplice
page << “alert(’upload avenuto con successo’);
end
Ciao,
grazie per l’info cmq volevo solo far notare che io ho postato una versione molto più semplice di quella che ho implementato nella mia app. E con la mia versione non ho alcun problema con la regexp del plugin.
Tnx