Sto cercando di uploadare file di immagini via ajax form.
Tentando di usare attachment_fu con un form Ajax mi sono scontrato col
problema dell’accesso di js al file system, e ho presto trovato la
“soluzione” via responds_to_parent e iframe:
l’action .js che risponde al form non include prototype
(Element.update is not a function) Come faccio a “iniettarlo” ? (stesso
problema degli ultimi 2 commenti al post sopra)
con quell’impostazione come faccio a degradare in assenza di js ?
(Element.update is not a function) Come faccio a “iniettarlo” ? (stesso
problema degli ultimi 2 commenti al post sopra)
con quell’impostazione come faccio a degradare in assenza di js ?
Forse esiste qualche soluzione alternativa ?
Grazie, Matteo.
ciao,
se ho ben capito il problema io ho fatto
così:
respond_to do |format|
if @pdffile.save
session[:pdf] = @pdffile.full_filename
flash.now[:notice] = ‘il file "’ + @pdffile.filename + ‘" è
stato caricato correttamente’
format.js do
responds_to_parent do
render :update do |page|
page.replace(“messages”, :partial => “msg”)
page.replace_html(“form_file”, :partial => “form_file”)
page[“webfaxpdf”].disable
page[“webfaxform”].enable
end
end
end
else
…
end
end
(Element.update is not a function) Come faccio a “iniettarlo” ? (stesso
problema degli ultimi 2 commenti al post sopra)
con quell’impostazione come faccio a degradare in assenza di js ?
Forse esiste qualche soluzione alternativa ?
Grazie, Matteo.
ciao,
se ho ben capito il problema io ho fatto
cos�:
respond_to do |format|
if @pdffile.save
session[:pdf] = @pdffile.full_filename
flash.now[:notice] = ‘il file "’ + @pdffile.filename + ‘" �
stato caricato correttamente’
format.js do
responds_to_parent do
render :update do |page|
page.replace(“messages”, :partial => “msg”)
page.replace_html(“form_file”, :partial => “form_file”)
page[“webfaxpdf”].disable
page[“webfaxform”].enable
end
end
end
else
…
end
end
Infatti anch’io ho fatto nello stesso modo, solo che qualcosa sembra
andare storto perchè quando chiama la funzione prototype per aggiornare
il partial prototype non è caricato…
saresti così gentile da mandare anche il template col form e l’iframe ?
Riguardo alla questione 2) come gestisci la mancanza di js sul browser ?
per quanto riguarda il degradare non l’ho risolto neanche io, però
essendoci l’iframe firefox (non l’ho ancora testato su altri browser)
fa partire il suo loader come per un refresh della pagina…magra
consolazione lo so ma almeno l’utente vede che sta succedendo
qualcosa…
L’unica idea che mi viene in mente è di lasciare il form normale senza
:format => ‘js’ e poi via js modificarlo al caricamento del template.
Appena risolvo l’altro problema ci provo.
per quanto riguarda il degradare non l’ho risolto neanche io, però
essendoci l’iframe firefox (non l’ho ancora testato su altri browser)
fa partire il suo loader come per un refresh della pagina…magra
consolazione lo so ma almeno l’utente vede che sta succedendo
qualcosa…
L’unica idea che mi viene in mente è di lasciare il form normale senza
:format => ‘js’ e poi via js modificarlo al caricamento del template.
Appena risolvo l’altro problema ci provo.
ciao,
il problema 2 l’ho risolto attaccando un observer all’evento onclick
del bottone di submit del form. questo però l’ho fatto via javascript
perchè gli helper di rails mi permettono di agganciare un observer
solo a elementidi input e non a qualsiasi elemento come invece mi
permette di fare prototype
al caricamento del form:
page.call(‘clicktoload’, ‘pdffile_submit’)
dove pdffile_submit è l’id del bottone di submit del form
e in application.js:
function clicktoload(elem)
{
$(elem).observe(‘click’, function(event){startLoad();});
}
dove startLoad è una funzione che mi fa partire un loader
poi nella action di risposta al form occorre fermare il loader
Che Rails usi ? In effetti gi� avevo dovuto usare
L’unica idea che mi viene in mente � di lasciare il form normale senza
:format => ‘js’ e poi via js modificarlo al caricamento del template.
Appena risolvo l’altro problema ci provo.
uso rails 2.1.1
Boh. Per ora mollo che mi si rinfreschino i neuroni.
Sono tornato sul problema dopo un bel pò con la mente fresca e un pò di
pace intorno e finalmente ho risolto tutto.
Quanto al problema 1) era probabilmente qualche erroraccio sciocco
relativo al target (l’iframe), rimettendo i pezzi in ordine è andato
tutto a posto.
Quanto al problema 2), come degradare in assenza di js, ho risolto così:
nelle view i form li ho lasciati senza l’attributo target e il .js
dell’action: