我需要将 js 对象存储在 ruby 类中,然后将其完整地传递回 js 。
只是对于某些上下文,我有一个后备方案,但效率不高。我可以切碎 js 对象并将值作为字符串一一传递,然后将其重新组合在一起,但它的数据很多。
在我的 js 端,如果我可以保持 js 对象完整,我可以简单地将对象传递回 js,然后我就设置好了。
对于进一步的上下文,我想做的是存储一个 ace 编辑器 session ace.edit("editor").getSession()
,它返回相当多的数据,如下所示
在 Ruby 类之一内部,稍后传回我的 js。编辑器 session 包含很多设置,例如语言模式、编辑器主题、字体大小切换换行,您会明白我需要存储的环境编辑器中的所有这些设置。我已经传回了重要的内容,例如语言和主题之类的内容,但希望传递整个 session ,以便 user-x 尽可能接近在您的环境中使用编辑器
我是 js 的新手,刚刚开始深入研究这个项目,所以如果您可以在回答时分享一些我可以分析的伪代码或片段。提前致谢
最佳答案
JSON 是一种以字符串形式传输复杂数据的标准方法。
JS:
var editor = ace.edit("editor");
editor.getSession().on("change", function () {
var session = ace.edit("editor").getSession();
var neededData = {};
neededData.mode = session.mode;
neededData.fontSize = session.fontSize;
//passing the mode to input
$('input[name="mode"]').val(JSON.stringify(neededData));
});
ruby :
editor_session_hash = JSON.parse(params[:mode])
现在您将以 ruby 哈希的形式获取整个 session 。你的整个方法可以大大改进,但这完全是另一个故事
在广泛的范围内,您应该始终将对象序列化(您可以谷歌这个术语)一侧为字符串,然后在另一侧解析它。有几种已知的序列化格式,但现在您可以仅停留在 JSON 上,而忘记所有其他格式
关于javascript - 将 javascript 对象完整传递给 ruby 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50091190/