这对我来说似乎是一个问题。正常方式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?
答案 0 :(得分: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
答案 1 :(得分:1)
您不应该破解Backbone以使其与RoR一起使用。 Backbone很聪明,可以(在某种程度上)知道它应该使用什么URL和方法。
例如,对于模型的初始提取,如果将url设置为'/ tasks',它将对'/ tasks / id'执行GET请求。当您更改该模型并调用model.save时,它将对'/ tasks / id'执行PUT请求。当你调用model.destroy时,它会发送一个DELETE请求(空体)
您必须考虑的一件事是CSRF令牌。我建议你在Gemfile中包含backbone-rails。它包括一些JavaScripts来帮助Rails / Backbone集成。