我想创建一个简单的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
有人可以帮助我吗?
答案 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)。