- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Rails 后端 API 编写一个练习 Backbone 应用程序,我对保存在 Backbone 模型上的行为感到困惑。
假设一个团队有很多玩家,我想在一个 POST 中保存一个有很多玩家的团队。
所以在 Rails 中我有:
class Team < ActiveRecord::Base
has_many :players
accepts_nested_attributes_for :players
end
class Player < ActiveRecod::Base
belongs_to :team
end
对于主干客户端,我定义了一个 Player 模型和一个 Players 集合(未显示)
然后是包含 Team 模型(注意:没有 Teams 集合)
Demo.Models.Team = Backbone.Model.extend({
urlRoot: '/teams',
defaults: {
'team_size': 12
},
initialize: function() {
this.players = new Demo.Collections.Players());
},
toJSON: function() {
var json = _.clone(this.attributes);
json.players_attributes = this.players.map(function(player) {
return player.toJSON();
});
return json;
}
}
当我在浏览器中检查我的字符串化 JSON 时,一切看起来都很好:
{"team_size":12, "players_attributes":[{"name":"Fred"},{"name":"Jim" },{"name":"Mark"}]}
检查服务器日志,重复单独的顶级属性(“团队规模”),一次在顶级,然后在根键下重复。
Started POST "/teams" for 127.0.0.1 at 2012-06-07 13:39:40 -0400
Processing by TeamsController#create as JSON
Parameters: {
"team_size"=>12, "players_attributes":[{"name":"Fred"},{"name":"Jim" },{"name":"Mark"}]},
"team"=>{"team_size"=>12}
}
我有几个问题:
确保 player_attributes 嵌套在根键中的最佳方法是什么?我(这样我就可以在 TeamController 中以标准的 rails 方式进行嵌套保存:(即 Team.create(params[:team]) )我可以使用 toJSON 中的一些 javascript 黑客来完成此操作,但我猜有一个更简单、更清洁的方式。
这是标准的、理想的行为吗?要发送这样的属性副本?我想没有什么害处,但闻起来不对劲。
我是不是没有正确定义 url/urlRoot 之类的东西?
谢谢
最佳答案
1- 您必须重写 toJSON 方法,以便将模型名称包含为发送到服务器的 JSON 元素的根。
toJSON: function() {
return { team: _.clone( this.attributes ) }
},
由于您已经搞砸并重写了这个方法,我看不出有任何理由不这样做。
2- 您描述的是一种非常奇怪的行为。尝试:
class Team < ActiveRecord::Base
self.include_root_in_json = false
end
它可能会消除 Rails 重复的参数解析。您从中获得的另一个优势是 Rails 不会将团队作为其生成的 JSON 的根元素包含在客户端中。
3- 您对 urlRoot 的定义很好。
关于javascript - 为什么 Backbone 模型在保存时向服务器发送重复的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10937106/
我有一个如下所示的目录树,我需要使用 Jenkins 将完整的结构上传到 Artifactory。现在,我找不到一种方法将属性分配给“德里”下的所有文件,使其具有 Continent(property
我想编写一个扩展,在加载特定 URL 时将 div 元素添加到页面(例如,当 url 为 http://www....&q=car&aq 时,我希望将包含“car”的 div 元素添加到网页) 我已经
从我的服务器应用程序(Spring Boot 应用程序)使用 apns 推送证书发送推送通知时被卡住了。苹果讨论 here关于我们如何发送带有证书的推送的概述,但没有关于 TLS 通信的技术细节(特别
我有一个具有相同类的 div 列表。每个 div 包含其他 div,.header、.body、.footer。当我将鼠标悬停在一个 div 内的某个元素上时,例如 .header,我需要在同一 di
如何在使用 netbeans 时将数据添加到 JTable。它的后台代码中的 Netbeans 是这样的: jTable1 = new javax.swing.JTable(); jTable1.se
我正在使用 plyr作为 HTML5 视频标签的包装器并使用 Hls.js 流式传输我的 .m3u8 视频。 我在 plyr 上解决了很多问题以启用质量选择器,并遇到了多个 PR,这些 PR 有这个问
我使用 Microsoft bot Framework 并将其部署到 Web Chat,我的 bot 以所需的正确格式打印消息并带有换行符“\n\n”,然后我使用以下教程 https://github
我已经在我的项目中添加了用于 Selenium 测试的 chromedriver 选项,但我不明白 edgedriver 的适当方法。我已经尝试了所有的可能性。 有人可以帮我吗? 谢谢你。
我需要能够在 ckeditor 的工具栏上添加一个下拉列表或按钮,以弹出一个列表,当单击一个列表项时,该列表项的文本将被添加到 ckeditor 的内容中 我还需要能够改变那个列表的内容,比如有一个功
当 bootstrap 3 collapsible 折叠时,如何向 div 添加类?我需要一个在 div 折叠时添加类 darken 的代码。当一个可折叠的关闭时,类 darken 应该被删除 #co
我在 Google map 中有很多标记(大约 3000 个),它们在弹出窗口中带有图标和高级详细信息。这就是为什么 map 打开很晚,所有标记加载也很晚。因为我从数据库加载所有标记列表并使用 for
我有一个我称之为资源的表,当用户连续单击按钮时,我想在 jquery 对话框中显示特定记录。 在我做的表中: "ui-button ui-state-default ui-corner-all", :
我正在使用第三方发送电子邮件,他们允许我通过向通过他们发送的电子邮件添加标题来对我的电子邮件进行分类。 是否可以在异常(exception)电子邮件发送前添加标题?或者至少,我将通过捕获中间件中的异常
我有一个页面,其中包含链接到页面适当部分的 anchor 。我想知道是否有人对如何在单击链接时以及当窗口/页面使用 jQuery 滚动到适当的 div 时切换 anchor 链接的类有任何建议? 例如
我正在使用 HTML、PHP 和 JS 创建一个报告网站。我有几张 table 正在展示。在每个表中有多个行 tr 和许多列 td。我对其进行了设置,以便当我单击其中一个 tr 时,它会获得 sele
我使用 UIWebView 以这样的缅甸字体显示搜索测试 NSString *googleText = @"မြန်မာဘာသာ"; NSString *googleLink = [N
在将其添加为包装器 UIView 的 subview 之前,我尝试使用 Autolayout 创建以下设置到我的 UITableView。 到目前为止,我正在使用以下内容,但一点运气都没有。据我所知,
在迭代 map 时,向 map 添加/删除元素是否安全?请看下面的伪代码: //Pseudo Code //test is a global variable
我编写了一个名为 dragscroll 的 Angular Directive(指令),它根据在 Canvas 上的拖动向右或向左滚动水平溢出元素。 请引用这个fiddle How it works:
在我的 meteor 应用程序中,我的 css 中有以下规则: body { background: #ddd url(../img/bg.png); padding-top: 120
我是一名优秀的程序员,十分优秀!