El problema es que tengo una forma remota que, en función de la condición, le gusta convertir a una forma no remota (usando UJS), y luego enviar tenga en cuenta que el formulario tiene una carga de archivo.Use JS para cambiar <form> de remoto a no remoto en Rails 3, HAML
He aquí los detalles: He prestado inicialmente la forma remota utilizando
= form_for @myobj, :url => {:action=>"remoteAction", :controller=>"myobjects"}, :remote => true do |f|
... (f.fields....)
que produce el código HTML:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" data-remote="true" action="/remoteAction">
cuando hago clic en Enviar, como era de esperar, se envía el formulario 'como JS '. en la acción del controlador, estoy haciendo una validación de los campos dentro del formulario enviado. Si se superan todas las validaciones, ejecuto la siguiente plantilla .js.haml:
$('form#new_myobj').removeAttr("data-remote");
$('form#new_myobj').attr('enctype', 'multipart/form-data');
$('form#new_myobj').attr('action', '/myobjects/regularAction');
que cambia con éxito el HTML de la página (testigo a través de Firebug) a:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" enctype="multipart/form-data" action="/myobjects/regularAction">
ya que el formulario contiene un f.file_field, tengo que enviarlo como multiparte para que la imagen pueda cargarse, y no puedo enviar 'AS JS' ahora, cuando hago clic en enviar, la acción del controlador 'regularAction' se llama, pero sigue siendo 'AS JS '
la búsqueda es decir, ¿qué más necesito cambiar en el HTML para que el formulario se pueda enviar no xhr? ¿Está relacionado con los encabezados?
Gracias por su sugerencia, entonces agregué la llamada unbind() a mi plantilla js.haml, pero la segunda presentación todavía va a la 'acción' de acción regular 'AS JS ' –
$ (' form # new_myobj '). Unbind() $ (' form # new_myobj '). RemoveAttr ("data-remote"); ... –
¿Hay algún otro componente que deba desvincular, quizás? –