Sto impazzendo… Dovrebbe essere usa sciocchezza ma non riesco a
risolverla e non riesco a comprenderne il perche`:
Ho un form e vorrei farmi restituire un js che modifica un div, nulla di
perverso, ho aggiunto il :remote => true al form ma non va, mi risponde
sempre come html. Ho specificato il datatype js e pur leggendomi il
testo javascript il browser lo interpreta come fosse test. O forzato nel
controller il mime js ( format.js {:js => “azione”} ) ma comunque
testo rimane.
Mi ricordo di aver utilizzato il remote => true nei form in passato e mi
ricordo di non aver avuto problemi. Eil dott. Alzheimer che mi ha raggiunto anzitempo o qualcosa e cambiato negli ultimi rails?
format.js {
render :update do |page|
page.replace_html “container_id”, :partial => ‘purr’
end
}
Ciao Alessandro,
Per sicurezza ho provato ma non va: con :update vado a generare del
codice javascript mentre il mio problema e` che mi esegue il form come
se non avessi inserito il :remote => true.
Riporto i log per completezza:
Started POST “/campaigns/2/emails/3/attachments” for 127.0.0.1 at
2012-07-03 13:33:59 +0200
Processing by AttachmentsController#create as HTML
Parameters {parametri}
{sql vario}
Completed 406 Not Acceptable in 526ms (ActiveRecord: 201.8ms)
406 esce in quanto io non ho creato un format.html quindi non e`
accettabile.
Se inserisco un format.html con un redirect ovviamente mi funziona tutto
correttamente.
Temo che il mio errore sia nel form ma non riesco a vedere dove sia
Cosi` si risolve l’arcano: nel codice generato dal form il data-remote
viene inserito correttamente ma viene ignorato il javascript dal browser
che non deve accedere ai dischi.
Facendo una ricerca con i termini giusti vengono fuori le risposte
giuste, ed e` un caso abbastanza comune, solitamente viene risolto con
iframe.
“The Remotipart gem enables AJAX file-upload capability to remote forms
in Rails 3 apps by extending the native jquery-ujs functionality.”
Nel sistema aggiungi poche righe di js, nella vista aggiungi normalmente
il remote true al form, lui si occupa di impacchettare e spedire tramite
iframe, per il resto c’e` mastercard