0

这对我来说似乎是个问题。Backbone 的正常工作方式是使用相同的 URL 和 GET、POST、PUT 和 DELETE。但很明显:

1) 除了方法之外的所有POST方法都需要在 URL 或请求正文中的 ID

2)DELETE请求不能包含正文或某些服务器忽略正文

那么,如何让 Ruby on Rails 服务器应用程序成功地与 Backbone 一起工作,而无需破解 Backbone,例如model.destroy()需要在 URL 中包含 ID?而且,正如我们的 RoR 开发人员告诉我的那样,为 PUT 进行路由的正常方法是在 URL 中也有一个 ID?

4

2 回答 2

2

您需要实现 5 条路由来利用骨干网的默认sync行为。对于资源user,它们是:

GET /user/        // Get a list of users
GET /user/:id     // Get a single users by id
POST /user/       // Create a new user
PUT /user/:id     // Update an existing user by id
DELETE /user/:id  // Delete an existing user by id

我对 Ruby on Rails 不是很熟悉,但是看看他们的文档,你可以通过以下方式来满足这个规范:

match "/user/" => "users#all", :via => :get
match "/user/:user_id" => "users#one", :via => :get
match "/user/" => "users#create", :via => :post
match "/user/:user_id" => "users#update", :via => :put
match "/user/:user_id" => "users#delete", :via => :delete
于 2012-05-11T22:09:05.437 回答
1

您不必破解 Backbone 即可与 RoR 一起使用。Backbone 足够聪明,可以(在一定程度上)知道应该使用什么 URL 和方法。

例如,对于模型的初始获取,如果您将 url 设置为“/tasks”,它将向“/tasks/id”发出 GET 请求。当您更改该模型并调用 model.save 时,它​​将向“/tasks/id”发出 PUT 请求。当你调用 model.destroy 时,它会发送一个 DELETE 请求(带有一个空的 body)

您必须考虑的一件事是 CSRF 令牌。我建议您在 Gemfile 中包含骨干轨。它包含一些 JavaScript 来帮助 Rails/Backbone 集成。

于 2012-05-11T22:13:09.027 回答