rails to_json总是带双引号,我怎么能删除它们?

时间:2010-12-28 02:47:43

标签: javascript ruby-on-rails json function

说我有这样的哈希{“onDoubleClick”=>“function(e){alert(e.message);}”} 当我在客户端上获取json时,如何获取函数而不是字符串。

像这样:

{ “onDoubleClick”:功能(E){警报(e.message);}}

我尝试将#放在开头但不起作用。{“onDoubleClick”=>“#function(e){alert(e.message);}”}

以前有人遇到过这个问题吗? 感谢

3 个答案:

答案 0 :(得分:2)

如果可能,您应该从服务器而不是字符串输出它作为文字函数。这样可以节省你的字符串parse-as,然后在客户端上保存eval()。

如果无法输出文字函数,可以在其上调用eval()将其转换为函数。如果名为o的变量存储JSON的结果,则可以运行:

o["onDoubleClick"] = eval(o["onDoubleClick"]);

将字符串计算为函数并将其存储回相同的变量中。

答案 1 :(得分:1)

为了解决这个问题,我创建了一个对象来保存“未加引号”的Javascript项,例如函数输出,然后向Hash添加了一个“to_javascript”,它使用了不带引号的版本来使它可用。

例如,这对我有用:     options [:controls] = {       :bold => {:visible =>真正},       :italic => {:visible =>真正},       :underline => {:visible =>真正},       :insertUnorderedList => {:visible =>真正},       :lol => {         :visible =>真正,         :exec => JavascriptUnquoted.new(“function(){$('## {html_id}')。wysiwyg('insertImage','/ images / lol_emoticon.jpg');}”)       }

options.to_javascript ==> {“controls”:{“italic”:{“visible”:true},“underline”:{“visible”:true},“insertUnorderedList”:{“visible”:true},“lol”:{“visible” :true,“exec”:function(){$('#review_text')。wysiwyg('insertImage','/ images / lol_emoticon.jpg'); }}

https://gist.github.com/771749

答案 2 :(得分:0)

尝试使用eval():

var key = "OnDoubleClick";
var value = "function(e){alert(e.message);}";
eval("var " + key + "=" + value);