LoginSignup
9
7

More than 3 years have passed since last update.

Ajax通信において、deleteメソッドを使う方法

Posted at

モーダルウィンドウを以下の記事を参考にして実装した。
https://qiita.com/takachan_coding/items/9179cf361d0e92ae0bad

しかし、削除ボタンを押しても、削除ができなかったので、Ajax通信で削除ができるように実装しましたので、そのポイントについてアウトプットします。

ソースコード


$(function() {
  $(".delete-btn").on("click",function(){
    $('#overlay').fadeIn();
    $(document).on("click","#modal-close-btn",function(){
      $('#overlay').fadeOut();
    });
    $(document).on("click","#delete-comformation-btn",function(){
      let ProductID = $(this).data("product-id");

      $.ajax({
        url: "/products/" + ProductID,
        type: "POST",
        data: {"id":ProductID,"_method": "DELETE"} 
      })
    })
  });
});

実装のポイント

$.ajax()を使ってAjax通有心を行う際は、引数のtypeには、GETもしくはPOSTのHTTPメソッドしか使えない。そのため、今回は、以下の記事を参考にして、DELETEのHTTPメソッドを使えるようにしました。
https://qiita.com/u-dai/items/d43e932cd6d96c09b69a

ポイントとしては、_methodメソッドを使うことでした。詳しくは参考文献を参考にしていただきたいと思います。

動作状況

1.削除前のDB(id:146, name:phpが存在する)
https://gyazo.com/11089d30fb16a09fdedeb5fba9d2810e

2.モーダルウィンドォの表示
https://gyazo.com/7c121e408e768482174241c7825b0d00

3.削除ボタンを押すと、イベント発火しAjax通信開始する(カスタムデータidを取得し、コントローラへ送る)
https://gyazo.com/fc2c44be206ffc318a85999df10f149f
Gyazoで拡大撮影
https://gyazo.com/414fef8ecd55f0385c8b82842419c1b5

4.コントローラのdestroyアクションが作動する
https://gyazo.com/f28c7227a88989d7c97b06bcf5086397
Gyazoで拡大撮影
https://gyazo.com/487ba5f775f9cd5e5c212c58bedd1463

5.binding.pry解除後(削除後)のDB(id:146, name:phpが存在しない)
https://gyazo.com/69b3990e72b3d6618bbd6bd558db28f6
Gyazoでターミナルのログを拡大撮影
https://gyazo.com/c8e6bd5a5613cde6f04d14be8c7f5f39

このような感じで、無事Ajaxで削除機能を実装することができました。

<参考文献>
山本陽平『webを支える技術』(2010年、技術評論社) 99頁以下

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7