在Javascript中哈希哈希哈希哈希

时间:2011-06-07 22:10:06

标签: javascript jquery ruby-on-rails

我在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循环中做什么?

2 个答案:

答案 0 :(得分:19)

您熟悉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.y.a将返回“string”

等...

编辑:

也许您需要使用@combat.to_json.html_safe,因为当您使用&lt;%=%&gt;时,它应该被html解析

答案 1 :(得分:5)

console.log(JSON.parse('<%= @link.errors.messages.to_json.html_safe%>'))  

返回对象
所以

JSON.parse('<%= @link.errors.messages.to_json.html_safe%>')  

可以用作js对象