将Ruby对象转换为用于插值的Javascript对象
问题描述:
将一些常见Ruby对象(如字符串,哈希值,数组)转换为相应的Javascript对象的好方法是什么?例如,jQuery css()
接受一个散列作为参数。假设我有一个Ruby的哈希值是这样的:将Ruby对象转换为用于插值的Javascript对象
h = {"background-color" => "yellow", "color" => "green"}
我想嵌入此红宝石对象转换成字符串,使之成为一个有效的JavaScript(jQuery的)命令。我现在最好的尝试是通过像这样的json转换它:
"$('#foo').css(JSON.parse('#{h.to_json}'));"
但它不能正常工作。我想要一个更直接和更有效的方式来做到这一点。有没有好的方法?
答
无需转换为字符串,然后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);
因此,一个json字符串被自动解析为JavaScript内的json? – sawa 2013-04-26 18:58:53
是的。请参阅添加内容,其中显示将呈现的内容; – Larsenal 2013-04-26 19:01:20
@sawa好了,基本上。它被解析为JavaScript,并且缺少一两个角落,JSON是JavaScript的一个子集。 – 2013-04-26 19:42:50