2008-12-10 14 views
8

Después de regresar a un proyecto anterior de Rails, encontré que ninguno de los enlaces destruir/eliminar funcionaba y al hacer clic en cancelar en la ventana emergente de confirmación seguiría enviando el enlace.método: =>: borrar no funciona y: confirmar opción ignorada

Ejemplo de mi código es:

<%= link_to 'Delete', admin_user_path(@user), :confirm => 'Are you sure?', :method => :delete %> 
+1

Tengo este mismo problema en una aplicación de Rails 3 que usa jQuery. ¿Encontraste alguna solución? – Callmeed

Respuesta

3

Este problema se produce si está utilizando jQuery, y si no, a continuación, busque algo así:

En mi caso, yo estaba usando:

javascript_include_tag: todos los%>

Y que no estaba funcionando, pero cuando me lo dijo así:

javascript_include_tag: por defecto%>

funcionó!

+0

jquery, derecho ... se olvidó de eso. –

0

Chris, Hi. Yo tuve el mismo problema. Eliminé Firebug y el problema persistió. Leí de otro usuario que necesitaba reiniciar Firefox, eso tampoco funcionó. Algunos dijeron que probar Safari, que tampoco funcionó.

Al final fue algo novato:

tengo ayudantes para insertar un icono, como edit_icon, que devuelve una etiqueta de imagen agradable para el icono de edición, etc.

Uno de estos métodos de ayuda fue el método delete_icon, donde escribí esto:

def delete_icon (object = nil) link_to image_tag ('icons/delete.jpg',: width => 20,: border => 0), object,: confirm => 'Are you sure?',: method =>: delete end

Fue un (buen) intento en DRY, pero mejor hubiera sido si hubiera tenido def delete_icon (object), y no object = nil, porque lo hace más claro cuando lo llamo que debo pasarlo por el objeto para destruir. Llamar al mismo método con el objeto que se eliminará funcionó para mí.

En resumen: compruebe dos veces sus métodos de ayuda si está tratando de SECAR.

0

Aquí está una manera de usar jQuery para proporcionar la misma confirmación para todos los botones Borrar:

;(function($){ 
    $(function(){ 
    $('input.destroy').click(function(){ 
     return confirm($(this).attr('data-confirm')); 
    }); 
    }); 
})(jQuery); 

Sólo tienes que estar seguro de añadir class = "destruir" a cada elemento, por ejemplo:

= button_to 'Delete', polygon, :method => :delete, :class => "destroy", :confirm => "Are you sure?" 
0

La mayoría de las veces, esto ocurre porque está llamando al código jQuery antes de que se haya cargado, o antes de que los elementos en la página existan.

Para combatir este uso algo como:

$(document).ready(function() { 
    $('*[data-confirm]').click(function(){ 
    return confirm($(this).attr('data-confirm')); 
    }); 
}); 
0

Aquí está la solución rápida - Basta con sustituir conforma con datos confirman

<%= link_to 'Delete', admin_user_path(@user), 'data-confirm' => 'Are you sure?', :method => :delete %> 
0

tratar de utilizar

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> 

antes

<%= javascript_include_tag "application" %> 

en su diseño, y también eliminar

//= require jquery 

línea en sus application.js.

Este fue el caso para mí. No tengo idea de por qué no funcionaba con los archivos originales de jquery.js.

Cuestiones relacionadas