在没有特定模型的情况下使用Backbone.Sync

时间:2011-12-05 20:45:59

标签: ruby-on-rails ajax backbone.js

(Rails 3 +骨干0.53) 我在“/ payments”网址上从我的API获取数据,它会返回不同类型的付款数据。

因此,用户可以删除,例如信用卡条目,并将其同步备份到服务器上

"/credit_cards".

问题是如果我使用Backbone.Sync语法

Backbone.Sync('delete', @options.credit_cards.get('id')) 

它给了我一个“ A”url“属性或函数必须指定”错误。

这个模型很有意义,例如:

@options.credit_cards.get('id') 
在这种情况下

不存在,因为credit_cards不存储任何数据。我只想用Backbone.syncála

做一个标准的DELETE
"/credit_cards/:id" 

但只是通过指定id(我从/ payments收到)而不是模型(但模型/集合有url ...)

所以我的问题是:1。) 在骨干网中有没有办法使用backbone.sync而不实际将数据存储在集合/模型中,更像是一个简单的jQuery ajax请求。 例如:

Backbone.Sync('delete', "specify_a_url_here_with/#{id}"))

而不是使用Backbone.Sync& $ .ajax请求混合。

2。)这是否有意义或有更好的选择。

非常感谢!我真的很喜欢!希望这个问题不要怪异。菲尔

2 个答案:

答案 0 :(得分:0)

当您尝试做一些更多的自定义,似乎不适合默认的Backbone行为时,我建议您覆盖模型中的Sync()函数或定义一个不同的函数,您可以定义自己的Ajax调用。

我倾向于将Backbone模型函数视为一组合理的默认值,可以在需要时覆盖,而不是必须使用的一组函数。

斯科特

答案 1 :(得分:0)

您可以在“选项”中将“url”和“data”传递给Backbone.Sync。

Backbone.sync(方法,模型,选项)返回$ .ajax(params),其中params.url和params.data反映您的模型,除非您在选项中明确地传递它们。

所以

Backbone.sync('delete', false, {url : "/credit_cards/1", data : ''}) 

应该有用。