開発
2014/2/20
AngularJSでのdeleteメソッド利用方法
nihei
先日はまったAngularJSでdeleteメソッドの利用方法について共有したいと思います。
まず前提としては、サーバ側はRailで構築されており、DBの更新の際のリクエストはDELETEメソッドを送る事によって実行されます。
今回問題だった点
クロスドメイン通信(CORS)の影響で、AngularJSのメソッドを利用した場合、ローカル環境でしかdeleteメソッドが利用できなかったこと。
※クロスドメインへdeleteメソッドを実行するとOPTIONSが実行されてしまう
対応策
下記の様に_method=deleteをpostで投げる事によって、自力でRailsで対応できる疑似DELETEメソッドを実施。
$scope.deleteLogDetail = function(id, index){ console.log(id); $http.post(urlService.urlLogDetails(id), $.extend({ _method: 'delete' }, params_remember_token) ) .success(function (data, status, headers, config) { console.log('success'); $scope.log_details.splice(index, 1); }) .error(function (data, status, headers, config) { console.log('error'); }); }
AngularJS側の設定も色々変更してみたのですが、独自でやる以外にうまくいく方法が無かったため同じ問題にはまってる人の時間を節約できれば幸いです。
よりスマートなやり方があれば是非教示頂ければと思います。