Rails Ajax Jquery Delete Отправляет запрос на отправку после

Я пытаюсь удалить экземпляр моей модели Rails с помощью Ajax.

Это происходит при нажатии кнопки, а мой код показан ниже:

$("#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>

Ответ 1

Предполагая, что ваша кнопка находится внутри формы, щелчок, вероятно, отправляет эту форму в дополнение к запуску запроса ajax.

Что вы хотите сделать, это предотвратить действие по умолчанию, нажав кнопку, которая отправляет форму.

Измените параметр function() на function(event), затем добавьте вызов 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();
});

Ответ 2

Вы можете использовать:

type: "DELETE"

вместо:

type: "POST"

и удалите

data: {"_method":"delete"}