如何使用Rails API在Javascript中获取删除

问题描述

我正在尝试使用Rails作为API发送获取删除请求。这是控制器中的destroy方法

def destroy
  track = Track.find_by(id: params[:id])
  track.destroy
end

我正在创建一个用于创建歌曲播放列表的应用程序的曲目。在index.js中,我正在渲染轨迹卡功能调用事件监听器。

const renderTrackCard = (trackObj) => {
    let trackCard = document.createElement('div')
    trackCard.className = 'card'
    trackCard.dataset.id = trackObj.id
    trackCard.innerHTML = `
      <p>${trackObj.title} - ${trackObj.artist} - Genre: ${trackObj.genre} <button class="delete-btn" data-action="delete" id="delete-btn"> X </button></p>
    `
    main().appendChild(trackCard)
    document.querySelector('div').addEventListener('click',removeTrack)
}

然后是删除跟踪功能

function removeTrack() {
    event.preventDefault()
    clearTrackForm()
    let id = event.target.dataset.id 
    fetch(BASE_URL+`/tracks/${id}`,{
        method: "DELETE",headers: {
            'Content-Type': 'application/json','Accept': 'application/json'
        }
    })
    .then(event.target.parentElement.remove())
}    

当我单击删除按钮时,什么也没有发生。请告知。

解决方法

第一件事,您认为调用destroy!而不是destroy来查看StackTrace并知道数据库中发生了什么?

要向服务器端发送请求,您可以使用AJAX like this one

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...