[英]Rails hash of hashes in Javascript
我在rails中有哈希哈希,比如:
{"round"=>1, "turn"=>1, "attacker_hp"=>11220, "defender_hp"=>205, "damage"=>95, "attacker"=>#<User id: 2, email:...>}, {"round"=>1, "turn"=>2, "attacker_hp"=>11220, "defender_hp"=>205, "damage"=>95, "attacker"=>#<User id: 1, email:...>} ...
所以,正如你所看到的,在这个哈希中,有许多哈希表示战斗转向。 还有一个哈希条目,其中包含一个完整的object.attributes('攻击者'条目')。
现在,我想在Rails中使用JQuery来表示。 我试过用类似的东西:
var combat_stats = <%= array_or_string_for_javascript(@combat) %>;
在Javascript中获取值。 这有效,但有一个重要问题。 它似乎创建了一个字符串数组。 因此,内部哈希现在是字符串,这使我无法在javascript中解析。
我的问题是,我如何访问以下值:
turn['attacker']['name'] or turn['attacker_hp']
我可以轻松地在Rails视图中的@ combat.each循环中做什么?
你熟悉JSON结构吗? 您可以使用@combat.to_json
然后使用json而不是数组。
有了它,您可以像在rails中一样轻松访问值,例如:
var foo = {
bar: 1,
x: [1, 2, 3],
y: {
a: "string"
}
}
foo.bar或foo [“bar”]将返回1
foo.x将返回数组[1,2,3]
foo.ya将返回“string”
等等...
编辑:
也许您需要使用@combat.to_json.html_safe
因为当您使用<%=%>时应该对其进行html解析
console.log(JSON.parse('<%= @link.errors.messages.to_json.html_safe%>'))
返回对象
所以
JSON.parse('<%= @link.errors.messages.to_json.html_safe%>')
可以用作js对象
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.