【发布时间】:2015-08-27 02:18:43
【问题描述】:
我在我的应用程序中使用 rails 4 和主干。我使用 Backbone 创建了删除方法,但是当我尝试使用它进行删除时,我收到了这个错误:
DELETE http://localhost:3000/[object%20Object] 400 (Bad Request)
我的删除方法:
deleteBook: (ev) ->
@model.destroy()
)
事件:
events:
"click .delete": "deleteBook"
按下那个错误,它显示模型类型是text/html。所以我想我必须将它转换为json?
如果我这样做:
deleteBook: (ev) ->
@model.toJSON().destroy()
)
更新:
我在 rails 控制器中的销毁方法(如果重要的话):
@book = Book.find(params[:id])
@book.destroy
redirect_to '/'
更新2:
我的骨干模型:
$(document).ready ->
window.Book = Backbone.Model.extend(url: ->
(if @id then "/books/" + @id else "/books")
urlRoot: '/books/'
)
然后什么都没有发生,我不会得到任何错误。所以我认为我在这里做错了什么?
【问题讨论】:
-
我认为您的问题不在于 Backbone,而在于您的服务器。当您在模型中使用destroy时,它会启动一个ajax请求以将其永久删除。
-
@Puigcerber 如果它在服务器中,我该如何修复它?如果对这个问题很重要,我用我的 rails destroy 方法更新了我的问题。
-
您在模型中设置的 URL 必须与您在 Rails 中使用的相同。例如,如果您的图书模型中有
urlRoot: '/books/',则需要 localhost:3000/books/[id] 指向您的 Ruby 方法。 -
@Puigcerber 如果我使用 rails 方法,它会毫无问题地破坏。我怎么能指向那个方向?我还添加了
urlRoot: '/books/',而不是初始化url,所以现在它给出了这个错误:Uncaught TypeError: string is not a function -
@Puigcerber 谢谢,这个可行。
标签: ruby-on-rails backbone.js coffeescript bad-request http-delete