2013-02-17 36 views
10

Ajaxを使用してRailsモデルのインスタンスを削除しようとしています。Rails Ajax Jquery Delete投稿後に投稿要求を送信します

これは、ボタンのクリックで発生し、下図のように私のコードは次のとおりです。私は成功し、それを削除することができています

$("#button").click(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "/slot_allocations/" + slotallocation_id, 
     dataType: "json", 
     data: {"_method":"delete"}, 
     complete: function(){ 
      $("#SlotAllocationForm").dialog("close"); 
      alert("Deleted successfully"); 
     } 
    }); 
}); 

、しかしdelete方法は、常にサーバにpost要求によって追跡されます既存のデータで新しいモデルを作成します。これらはサーバーへの要求です。

1. POST http://localhost:3000/slot_allocations/1009 [HTTP/1.1 204 No Content 57ms]  
2. POST http://localhost:3000/slot_allocations [HTTP/1.1 302 Found 111ms] 
3. GET http://localhost:3000/slot_allocations/1010 [HTTP/1.1 200 OK 185ms] 

#1は、私のボタンをクリックすると発生します。しかし、なぜ#2#3が出現するのか、あまりよく分かりません。

<button id="button">Delete</button> 
<div class="actions"><%= f.submit %></div> 
+0

(該当する場合は、周辺のフォーム)ボタンが定義されているビューの一部を投稿することができます –

+0

ビュー上の2つのボタンの

<%= f.submit %>
を削除します。次のコードは、最初のボタン用です。 –

+0

送信ボタンが問題の可能性があり、削除しようとしましたが、2回目の投稿アクションがまだ発生していると思いました。 –

答えて

21

あなたのボタンを仮定すると、それはおそらく、AJAXリクエストを発射に加えて、そのフォームを提出されたクリック、フォームの内側にある:

は、ビュー内の2つのボタンがあります。

あなたがしたいのは、フォームを送信しているボタンをクリックするデフォルトの操作を禁止することです。

変更function(event)からfunction()パラメータは、その後、event.preventDefault()呼び出しを追加:あなたが使用することができます

$("#button").click(function(event){ 
    $.ajax({ 
     type: "POST", 
     url: "/slot_allocations/" + slotallocation_id, 
     dataType: "json", 
     data: {"_method":"delete"}, 
     complete: function(){ 
      $("#SlotAllocationForm").dialog("close"); 
      alert("Deleted successfully"); 
     } 
    }); 
    event.preventDefault(); 
}); 
+0

これはフォーム内にあり、これは完全に機能しました。ありがとう! –

+3

私の人生は 'data:{" _method ":" delete "}、...'の部分で保存しました。 +1しました –

+1

@ cassi.lup 'data:{" _method ":" delete "}'はOPの質問にあった。あなたの+1は@バタービールに行ったはずです - ちょうどsay'n。 – user664833

6

type: "DELETE" 

の代わり:

type: "POST" 

を削除します
data: {"_method":"delete"} 
+0

[フォームの提出に関しては、ほとんどのブラウザが「GET」や「POST」以外の方法をサポートしていません](http://edgeguides.rubyonrails.org/form_helpers.html#how-do-forms-with-patch、 -put、-or-delete-methods-work-questionmark);別の参考文献についてはhttps://api.jquery.com/jquery.ajax/を参照してください。*他のHTTPリクエストメソッド(PUTやDELETEなど)もここで使用できますが、**ではサポートされていません**すべてのブラウザ。* – user664833

+0

今日のブラウザは 'XMLHTTP'要求を行う際に 'PUT' /' DELETE'をサポートしています。しかし、それは

タグ – illusionist

+1

でサポートしていない可能性があります。私のケースでは、データ付きのPOST:{"_method": "delete"}は必要なものです。私はDELETEを使用したときに実行された:DELETE "/ controller/member_id"を削除し、member_idでオブジェクトを削除しましたが、DELETE "/ controller"という別の要求を開始しました。しかし、それはフォームにあったボタンではなくリンクでした。私はこの異常の原因を知りません。 – KaizenCodes

関連する問題