繁体   English   中英

在Javascript中哈希哈希哈希哈希

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM