У меня это работает по большей части. Ссылка на рельсы:
<%= link_to(image_tag('/images/bin.png', :alt => 'Remove'), @business, :class => 'delete', :confirm => 'Are you sure?', :id => 'trash') %>
:class => "delete"
вызывает функцию ajax, так что она удаляется, а страница не обновляется, что отлично работает. Но поскольку страница не обновляется, она все еще существует. Таким образом, моя мусор id вызывает эту функцию jquery:
$('[id^=trash]').click(function(){
var row = $(this).closest("tr").get(0);
$(row).hide();
return false;
});
Что скрывает строку любого значка корзины, на который я нажал. Это также отлично работает. Я думал, что все это сработало, и тогда я столкнулся с этой проблемой. Когда вы нажмете на мой мусор, я могу открыть окно подтверждения, чтобы спросить вас, уверены ли вы. Независимо от того, выбираете ли вы отмену или принятие, jquery срабатывает, и он скрывает строку. Он не удаляется, только скрывается, пока вы не обновите страницу. Я попытался изменить его, чтобы запрос выполнялся через jquery, но затем рельсы удаляли строку независимо от того, что я выбираю в своем приглашении, потому что вызывалась функция .destroy при вызове приглашения.
Мой вопрос в том, как я могу получить значение для отмены или принятия из подсказки для подтверждения, чтобы в моем jquery у меня может быть инструкция if, которая скрывается, если они нажимают кнопку accept и ничего не делают, если они нажимают на отмену.
EDIT: ответ на вопрос ниже. Это не сработало. Я попытался изменить свою ссылку на:
<%= 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;
}
});
Что делает трюк.