将 javascript 对象原封不动地传递给 ruby class
Pass javascript object intact to ruby class
我需要在 ruby class 中存储一个 js 对象,然后将其原封不动地传回给 js。
只是在某些情况下,我有一个后备方案,但效率不高。我可以切碎 js 对象并将值作为字符串一个一个地传递,然后将其拼凑起来,但它有很多数据。
在我的 js 方面,如果我可以保持 js 对象完好无损,我可以简单地将对象传回 js,然后我就设置好了。
对于进一步的上下文,我想做的是存储一个 ace 编辑器会话 ace.edit("editor").getSession()
,其中 returns 相当多的数据,如下所示
Ruby class 之一的内部,稍后传回我的 js。编辑器会话包含很多设置,例如语言模式、编辑器主题、字体大小切换包装,您明白了我需要存储的环境中编辑器中的所有这些设置。我已经传回了重要的东西,比如语言和主题,但我想通过整个会话,这样 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 散列的形式获取整个会话。您的整个方法可以大大改进,但这完全是另一回事
在广泛的范围内,您应该始终在一侧将您的对象序列化(您可以 google 这个术语)为字符串,然后在另一侧解析它。有几种已知的序列化格式,但现在您可以停在 JSON 上而忘记所有其他格式
我需要在 ruby class 中存储一个 js 对象,然后将其原封不动地传回给 js。
只是在某些情况下,我有一个后备方案,但效率不高。我可以切碎 js 对象并将值作为字符串一个一个地传递,然后将其拼凑起来,但它有很多数据。
在我的 js 方面,如果我可以保持 js 对象完好无损,我可以简单地将对象传回 js,然后我就设置好了。
对于进一步的上下文,我想做的是存储一个 ace 编辑器会话 ace.edit("editor").getSession()
,其中 returns 相当多的数据,如下所示
Ruby class 之一的内部,稍后传回我的 js。编辑器会话包含很多设置,例如语言模式、编辑器主题、字体大小切换包装,您明白了我需要存储的环境中编辑器中的所有这些设置。我已经传回了重要的东西,比如语言和主题,但我想通过整个会话,这样 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 散列的形式获取整个会话。您的整个方法可以大大改进,但这完全是另一回事
在广泛的范围内,您应该始终在一侧将您的对象序列化(您可以 google 这个术语)为字符串,然后在另一侧解析它。有几种已知的序列化格式,但现在您可以停在 JSON 上而忘记所有其他格式