将带有制表符的字符串放入Ace编辑器中?

时间:2017-10-11 19:39:16

标签: javascript ruby-on-rails ruby string ace-editor

我的网页中嵌入了一个ace编辑器,我希望从数据库中保存/加载一串代码并将其插入带有editor.setValue(sometext)的ace编辑器

我的数据库中的代码字符串就像public class Solution {\n\t\n},在我的page.js中,我有以下代码将字符串注入编辑器: editor.setValue("<%= @submission.source_code.inspect[1..-2] %>", 1); 其中@submission.source_code是我想要的代码,我在ruby中使用.inspect来摆脱&amp; quot事物。

但是如果我在编辑器中修改代码并保存,那么下次我从db加载代码时,它只是将每一行放入具有许多空格的同一行。所以我想知道如何将代码保存到db中并使其在下一次加载时仍具有相同的格式?

这是我的编辑页面代码:

<%= form_for(@submission, url: save_path) do |f| %>
  <pre id="editor" style="height: 86vh; margin-bottom: 0px"></pre>
  <%= f.text_field :source_code, id: :submission_source_code %>
  <%= f.number_field :assignment_id, id: :submission_assignment_id, style: "display: none", :value => @assignment.id %>
<% end %>

<script>
  var editor = ace.edit("editor");
  var input = $('input[id="submission_source_code"]').hide();
  editor.setTheme("ace/theme/xcode");
  editor.getSession().setMode("ace/mode/java");
  editor.setShowPrintMargin(false);
  editor.setOptions({fontSize: "14px"});
  editor.setValue("<%= @submission.source_code.inspect[1..-2] %>", 1);
  editor.getSession().on('change', function() {
    input.val(editor.getSession().getValue());
    console.log(input.val());
  });
</script>

例如,当我保存以下代码时:

public class Solution {
    public int fib(int n) {
        return n;
    }
}

它变成了这个:

Saved text

0 个答案:

没有答案