DELETE请求,反应+通量+轨道

时间:2015-12-25 14:47:35

标签: ruby-on-rails reactjs-flux

我想创建一个简单的twitter_clone。现在,我正在尝试添加一项功能,以便能够取消关注用户。 我到目前为止所做的事情:

用户可以关注其他用户(我是通过Flux模式完成的) 我已经这样做了:

followUser(userId){
    $.post("/followers", {user_id: userId})
    .success(rawFollower => ServerActions.receivedOneFollower(rawFollower))
    .error(error => console.log(error));
},

它向/followers发送一个POST,并且USER STORE正在获取此数据以自行更新。

现在我正在寻找如何删除它的方法。我试过这样做:

unfollowUser(userId){
    console.log ("API.unfollowUser");   
    $.delete("/followers", {user_id: userId})
    .success(unfollowUser => ServerActions.removedOneFollower(unfollowUser))
    .error(error => console.log(error));
}

但它不起作用。我收到了错误消息:

  

未捕获的TypeError:$ .delete不是函数

基本上,我尝试从数据库中删除一行,因此json与它连接,稍后更新一个STORE(从我用来确定React元素状态的数组中删除这个json)

这是来自Rails粉丝控制器的破坏行为:

def destroy
    follower = Follower.find(user_id: params[:user_id],
                            followed_by: current_user.id)
    follower.destroy    
end

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

正如您所看到的,您获得的错误是Javascript错误,而不是Rails错误。

jQuery没有$.delete方法。相反,您必须使用$.ajax并指定HTTP方法,如下所示:

$.ajax({
  url: '/followers',
  method: 'DELETE',
  data: { user_id: userId }
}).done(unfollowUser => ServerActions.removedOneFollower(unfollowUser))
  .fail(error => console.log(error))

但是,这可能也会失败,因为jQuery可能不支持使用DELETE请求发送数据,这是有道理的。

如果您正在使用Rails并尝试使用RESTful,那么您不应该发送这样的DELETE请求:

DELETE /followers
{ user_id: userId }

相反,您应该发送这样的DELETE请求:

DELETE /followers/:user_id

所以要修改代码,它就像这样:

$.ajax({
  url: '/followers/' + userId ,
  method: 'DELETE',
}).done(unfollowUser => ServerActions.removedOneFollower(unfollowUser))
  .fail(error => console.log(error))

我还没有尝试过上面的任何代码,但它应该只是工作(TM)。