使用ruby生成节点并使用javascript错误显示它们
Generating nodes using ruby and displaying them with javascript error
所以我试图从我的数据库中提取节点(通过递归地),然后显示json代码我有一个javascript库。问题是库没有识别json数组输出,因为它有额外的引号和斜杠(/)。下面是代码:
data = {
"nodes":
"'"User1:{'color':'green','shape':'dot','label':'You'},
User2:{'color':'green','shape':'dot','label':'You'},
User3:{'color':'green','shape':'dot','label':'You'}'""
,"edges":{}};
我想让它看起来像这样:
var data = {
"nodes":{
"You":{'color':'green','shape':'dot','label':'You'},
Ben:{'color':'black','shape':'dot','label':'Ben'},
David:{'color':'black','shape':'dot','label':'David'}
},
"edges":{
You:{ Ben:{}, David:{} },
Ben:{ David:{}}
}
};
在我的user_controller中,我使用这个:
def make_json(node, string = "")
node[1].each do |n|
string += node[0] + "{'color':'green','shape':'dot','label':'You'},"
return make_json(n, string )
end
return string + node[0] + "{'color':'green','shape':'dot','label':'You'}"
end
最后,这个:
@data = {}
@data['nodes'] = make_json(@user_tree[0]).to_json
@data['edges'] = {}
我尝试使用替换方法,但数据变量似乎不是一个字符串,所以我不能只是替换引号。我很感激任何帮助。
谢谢!
输出中额外的'"
的原因是您在make_json
方法的返回值上调用to_json
,这是一个字符串。
很难看出你在make_json
中想做什么,但假设你想使用输出作为@data
哈希值,然后将其转换为json,我认为你最好让make_json
建立哈希并返回。通常,当返回JSON响应时,最简单的解决方案是用Ruby散列和数组构建一个数据结构,然后调用to_json
。这里是一个非常简化的例子(我不知道@user_tree
是什么,所以我不理解递归步骤,但我希望这能给你一个总的想法):
def make_json(node, hash = {})
node[1].each do |n|
hash[n[0]] = {:color => 'green', :shape => 'dot', :label => n[0]}
end
hash
end
如果您尝试自己构建JSON字符串,很容易出错。您所说的目标输出不是有效的JSON,尽管它可能是有效的JavaScript。字符串需要用双引号括起来,例如
"Ben": {"color": "black", "shape": "dot", "label": "Ben"}
而不是:
Ben:{'color':'black','shape':'dot','label':'Ben'}
相关文章:
- object响应时出现对象错误javascript
- 未捕获的语法错误:javascript对象上出现意外的标记ILLEGAL
- Phonegap-Android 4.4-html5音频长度错误(javascript和媒体插件)
- 未捕获的语法错误:javascript中出现意外的标记}
- 如何从 MVC4 链接调用 Javascript 方法(错误 JavaScript 运行时错误:对象不支持此操作)
- 未捕获类型错误javascript方法
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 解析器错误(Javascript初学者寻找解决方案)
- IE 错误 .JavaScript 运行时错误:对象不支持属性或方法“preventDefault”
- appendChild 不是函数错误 (JAVASCRIPT)
- 错误 JavaScript 函数
- 而循环抛出错误JavaScript
- 意外的类型错误 - Javascript,多维数组
- 语法错误:Javascript 中的意外令牌/将数据发布到 Amazon s3
- 语法错误:Javascript 中缺少指数
- 错误“JavaScript 运行时错误:查找滚动位置时无法获取未定义或空引用的属性'scrollLeft'”
- 错误 JavaScript 循环数组
- 错误:Javascript 上的 [对象对象]
- IndexedDBShim.js错误:JavaScript运行时错误:在严格模式下不允许分配只读属性
- 在Evernote listNotebooks API上获取错误-Javascript/Node.Js