Tengo esto funcionando en su mayor parte. Mi enlace de rieles es:Los rieles destruyen confirman con Jquery AJAX
<%= link_to(image_tag('/images/bin.png', :alt => 'Remove'), @business, :class => 'delete', :confirm => 'Are you sure?', :id => 'trash') %>
:class => "delete"
está llamando a una función de ajax de modo que se elimina y la página no se actualiza que funciona muy bien. Pero debido a que la página no se actualiza, todavía está allí. Así que mi ID de basura está llamando esta función jQuery:
$('[id^=trash]').click(function(){
var row = $(this).closest("tr").get(0);
$(row).hide();
return false;
});
¿Qué se esconde la fila de cualquier icono de la papelera hice clic en. Esto también funciona genial. Pensé que todo había funcionado y luego di con este problema. Cuando haces clic en mi papelera puedo hacer que aparezca este cuadro de confirmación para preguntarte si estás seguro. Independientemente de si elige cancelar o aceptar, el jquery se activa y oculta la fila. No se elimina, solo se oculta hasta que actualice la página. Traté de cambiarlo para que el aviso se realice a través de jquery, pero luego los rieles estaban borrando la fila independientemente de lo que elija en mi mensaje porque se llamaba a la función .destroy cuando se llamaba a la solicitud.
Mi pregunta es cómo puedo obtener el valor para cancelar o aceptar de la ventana emergente de confirmación de rieles para que en mi jquery pueda tener una instrucción if que se oculte si hacen clic en aceptar y no hace nada si hacen clic en cancelar.
EDITAR: Responder a la pregunta a continuación. Eso no funcionó. He intentado cambiar mi enlace a:
<%= link_to(image_tag('/images/bin.png', :alt => 'Remove'), @business, :class => "delete", :onclick => "trash") %>
y poner esto en mi jQuery
function trash(){
if(confirm("Are you sure?")){
var row = $(this).closest("tr").get(0);
$(row).hide();
return false;
} else {
//they clicked no.
}
}
Pero la función nunca fue llamado. Simplemente lo elimina sin aviso y no lo oculta. Pero eso me dio una idea.
Tomé la función de borrado que el Ajax estaba llamando
$('a.delete').click (function(){
$.post(this.href, {_method:'delete'}, null, "script");
$(row).hide();
});
Y modificaron la implementación de su código:
eliminar :confirm => 'Are you sure?'
$('a.delete').click (function(){
if(confirm("Are you sure?")){
var row = $(this).closest("tr").get(0);
$.post(this.href, {_method:'delete'}, null, "script");
$(row).hide();
return false;
} else {
//they clicked no.
return false;
}
});
¿Qué hace el truco.
No funcionó pero me llevó a la respuesta. – Mike
¡Entonces voto a favor por mi amabilidad! ;) –