javascript - 将 javascript 对象完整传递给 ruby​​ 类

标签 javascript jquery ruby-on-rails ruby ace-editor

我需要将 js 对象存储在 ruby​​ 类中,然后将其完整地传递回 js 。

只是对于某些上下文,我有一个后备方案,但效率不高。我可以切碎 js 对象并将值作为字符串一一传递,然后将其重新组合在一起,但它的数据很多。

在我的 js 端,如果我可以保持 js 对象完整,我可以简单地将对象传递回 js,然后我就设置好了。

对于进一步的上下文,我想做的是存储一个 ace 编辑器 session ace.edit("editor").getSession() ,它返回相当多的数据,如下所示

enter image description here

在 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/

相关文章:

javascript - 提交字段而不填写 "hidden"必填字段,除非它们被选中

jquery - 带列过滤器的 jquery 数据表中的全选复选框

javascript - div 上的滚动条只有在超过 30 个元素时才会出现

ruby-on-rails - 每次在 rails 中导入具有不同列标题的 CSV

ruby-on-rails - 为什么我在需要发条 gem 时得到 Gem::LoadError?

ruby-on-rails - 子目录和 Rails Assets 管道

javascript - 是否可以控制获取哪些 Google map 脚本(JavaScript API)?

javascript - 如何在 HTML 中实现 "select all"复选框?

javascript - IIFE 和事件监听器如何协同工作?

jquery - 添加类 "selected"