簡體   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