【发布时间】:2018-03-30 02:12:27
【问题描述】:
正在为我的学校构建一个 MVC Sinatra 应用程序的项目。我想创建一个可以使用 ace 编辑器保存和显示回 sn-ps/algos 的网络应用程序。
我想出了如何(看似)通过 ace 编辑器捕获表单输入,方法是隐藏输入字段并使用下面的 sn-p 在更改时从 ace 分配值。
//CAPTURE/SET VALUE
var textarea = $('input[name="content"]');
editor.getSession().on("change", function () {
textarea.val(editor.getSession().getValue());
});
我的表单是这样的
<!--ACE EDITOR-->
<div id="editor"></div>
To open settings panel, inside editor - CTRL+Q (Windows) | CMD+Q (Mac)
<!--------------------------------------------------------->
<!--FORM-->
<form action="/ace" method="POST">
<!--normal-->
<input type="text" name="content" style="display: none;" />
<!--submit-->
<input type="submit" value="Save">
</form>
我可以很好地捕获参数,但问题是它不保留换行符所以输入...
def something
end
进入 ace 编辑器并单击提交会返回
"def something end"
理论上我很想得到类似的东西
"def something\n\nend"
或类似的东西......你得到了漂移
我需要能够以某种方式使用编辑器来捕获输入,并在提交时将其分配给一个对象属性,如此伪
snippet = Snippet.new(:content => params[:content])
然后能够调用它并以正确的格式显示在编辑器上
snippet.content (preserves linebreaks)
完整的代码和图像HERE 如果您更喜欢视觉效果。 任何帮助将不胜感激,如果有什么我遗漏的,请告诉我..希望我提供了足够的信息和详细的信息。
【问题讨论】:
-
我认为从会话中获取值也提供了 \n(new line break) .. 只需在 \n 上进行拆分并检查你是否得到了一些东西。
-
你能给我举个例子来说明你的意思吗?如果这就是我认为你的意思,我已经尝试过了并取回了这个i.imgur.com/tgIYXOg.png
-
在设置输入值之前,我还在 js 中尝试了
textarea.val(editor.getSession().getValue().split("\n").join("\n"));,它可以在浏览器控制台上运行,但是当发送到输入时仍然返回而没有中断
标签: javascript html ruby ace-editor sinatra-activerecord