2013-04-26 72 views
3

将一些常见Ruby对象(如字符串,哈希值,数组)转换为相应的Javascript对象的好方法是什么?例如,jQuery css()接受一个散列作为参数。假设我有一个Ruby的哈希值是这样的:将Ruby对象转换为用于插值的Javascript对象

h = {"background-color" => "yellow", "color" => "green"} 

我想嵌入此红宝石对象转换成字符串,使之成为一个有效的JavaScript(jQuery的)命令。我现在最好的尝试是通过像这样的json转换它:

"$('#foo').css(JSON.parse('#{h.to_json}'));" 

但它不能正常工作。我想要一个更直接和更有效的方式来做到这一点。有没有好的方法?

回答

7

无需转换为字符串,然后JSON.parse:

"$('#foo').css(#{h.to_json});" 

或者,如果你打破它了...

var h = #{h.to_json}; 
"$('#foo').css(h);" 

这是呈现给客户端:

var h = {"background-color":"yellow","color":"green"}; 
$('#foo').css(h); 
+0

因此,一个json字符串被自动解析为JavaScript内的json? – sawa 2013-04-26 18:58:53

+0

是的。请参阅添加内容,其中显示将呈现的内容; – Larsenal 2013-04-26 19:01:20

+1

@sawa好了,基本上。它被解析为JavaScript,并且缺少一两个角落,JSON是JavaScript的一个子集。 – 2013-04-26 19:42:50