Il problema è che ho un modulo remoto che, in base alla condizione, id mi piace convertire in un modulo non remoto (usando UJS), e quindi inviare. nota che il modulo ha un caricamento di file.Usa JS per cambiare <form> da remoto a non remoto in Rails 3, HAML
Ecco i dettagli: ho inizialmente reso sotto forma remoto utilizzando
= form_for @myobj, :url => {:action=>"remoteAction", :controller=>"myobjects"}, :remote => true do |f|
... (f.fields....)
che produce il codice HTML:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" data-remote="true" action="/remoteAction">
quando ho fare clic su Invia, come previsto, il modulo viene inviato 'come JS '. nell'azione del controller, eseguo la convalida dei campi all'interno del modulo inviato. Se tutte le convalide passano, eseguo il seguente modello .js.haml:
$('form#new_myobj').removeAttr("data-remote");
$('form#new_myobj').attr('enctype', 'multipart/form-data');
$('form#new_myobj').attr('action', '/myobjects/regularAction');
che cambia con successo il codice HTML della pagina (assistito via Firebug) a:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" enctype="multipart/form-data" action="/myobjects/regularAction">
dal momento che il modulo contiene un file.f.file, devo presentare come multipart in modo che l'immagine possa essere caricata, e non posso inviare "AS JS" ora, quando clicco su submit, l'azione controller 'regularAction' è effettivamente chiamata, ma è ancora 'AS JS '
la ricerca ion is, cos'altro ho bisogno di cambiare in HTML così il modulo può essere inviato non-xhr? è legato alle intestazioni?
Grazie per il tuo suggerimento, così ho aggiunto la chiamata unbind() al mio modello js.haml, ma il secondo invio va comunque all'azione 'regularAction' 'AS JS ' –
$ (' modulo # new_myobj '). Unbind() $ (' modulo # new_myobj '). RemoveAttr ("data-remote"); ... –
c'è qualche altro componente che è necessario separare, forse? –