私はこれをほとんどの部分で使用しています。マイレールリンクがある:それは削除され、ページが素晴らしい作品その更新されないようにRailsはJquery AJAXで確認を破棄します
<%= 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ステートメントを受け入れる場合は、クリックしてキャンセルし、何もしないことができます。
編集:以下の回答質問。 それは動作しませんでした。私はに私のリンクを変更してみました:
<%= 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.
}
}
でこれを置くしかし、関数が呼び出されることはなかったです。プロンプトを表示せずに削除するだけで、隠すことはありません。 しかし、それは私にアイデアを与えました。
私はアヤックスが
$('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;
}
});
を削除します。
動作しませんでしたが、答えにつながります。 – Mike
それから私の役に立つためにupvote! ;) –