У меня это работает по большей части. Моя рельсовая ссылка:
<%= link_to(image_tag('/images/bin.png', :alt => 'Remove'), @business, :class => 'delete', :confirm => 'Are you sure?', :id => 'trash') %>
:class => "delete"
вызывает функцию ajax, чтобы она удалялась и страница не обновлялась, что прекрасно работает. Но поскольку страница не обновляется, она все еще там. Так что мой идентификатор мусора вызывает эту функцию jquery:
$('[id^=trash]').click(function(){
var row = $(this).closest("tr").get(0);
$(row).hide();
return false;
});
Который скрывает строку с любым значком корзины, на который я нажал. Это также прекрасно работает. Я думал, что у меня все получилось, а потом столкнулся с этой проблемой. Когда вы нажимаете на мою корзину, у меня появляется всплывающее окно подтверждения, чтобы спросить вас, уверены ли вы. Независимо от того, выберете ли вы «Отменить» или «Принять», JQuery запускается и скрывает строку. Он не удаляется, только скрывается, пока вы не обновите страницу. Я попытался изменить его так, чтобы приглашение выполнялось через jquery, но затем rails удалял строку независимо от того, что я выбрал в своем приглашении, потому что функция .destroy вызывалась при вызове приглашения.
Мой вопрос на самом деле состоит в том, как мне получить всплывающее окно подтверждения отмены или подтверждения, чтобы в моем jquery я мог получить утверждение if, которое скрывает, если они нажимают кнопку accept, и ничего не делает, если они нажимают кнопку отмены. *
РЕДАКТИРОВАТЬ: Ответ на вопрос ниже.
Это не сработало. Я попытался изменить свою ссылку на:
<%= link_to(image_tag('/images/bin.png', :alt => 'Remove'), @business, :class => "delete", :onclick => "trash") %>
и помещаю это в мой jquery
function trash(){
if(confirm("Are you sure?")){
var row = $(this).closest("tr").get(0);
$(row).hide();
return false;
} else {
//they clicked no.
}
}
Но эта функция никогда не вызывалась. Он просто удаляет его без запроса и не скрывает его.
Но это дало мне идею.
Я взял функцию удаления, которую вызывал ajax
$('a.delete').click (function(){
$.post(this.href, {_method:'delete'}, null, "script");
$(row).hide();
});
И изменил его, реализовав ваш код:
удалить :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;
}
});
Что делает трюк.