2010-05-17 26 views
6

Quiero mostrar una ventana modal con un mensaje de error, cuando el usuario ha ingresado algo no válido en un formulario, pero representa otra acción si todo está bien. Sin embargo, cuando trato de mostrar la ventana modal conNo se puede representar JavaScript desde el controlador Rails

render :js => "jQuery.facebox(#{...})" 

sólo el JavaScript real llamado se muestra:

try { 
    jQuery.facebox(...) 
} catch (e) { alert('RJS error:\n\n' + e.toString()); 
    alert('jQuery.facebox(\"<div class=\'error\'>Error</div>\")'); 
    throw e; 
} 
+0

Eh, ¿cuál es la pregunta? –

+0

La pregunta es: ¿Qué estoy haciendo mal? –

+0

Asegúrese de tener un failsafe en caso de que su usuario no tenga javascript. de lo contrario, no sabrían que estaban recibiendo un error. Como regla personal, encuentro que eliminar las ventanas modales aumenta la usabilidad ... realmente no ayuda a la pregunta, aunque pensé que compartiría algunas palabras de sabiduría. – Schneems

Respuesta

1

probar este

render :update do|page| 
    page << "jQuery.facebox(#{...})" 
end 
+0

Lo mismo sucede. –

1

Tal vez usted debe especificar en la llamada jQuery el tipo de datos de la respuesta que está esperando.

ej .:

$.ajax({ 
    url: "/controller/action/id", 
    success: function(){ 
    $(this).addClass("done"); 
    }, 
    dataType: 'script' 
}); 
7

¿Ha intentado poner el código en un parcial? Así que en lugar de

render :js => "jQuery.facebox(#{...})" 

tratar

render :partial => "my_facebox_popup" 

Luego interior de su _my_facebox_popup.html.erb parcial poner su código:

<script type = "text/javascript"> 
... 
</script> 

depurar cualquier error que se obtiene con firebug.

Cuestiones relacionadas