我正在尝试在一个使用涡轮链接的页面中实现ACE编辑器。但是,只有当我直接调用该页面或重新加载该页面时,编辑器才能工作。导航到它不会触发使编辑器工作所需的每一个步骤。
当前集成:
<script src="//cdnjs.cloudflare.com/ajax/libs/require.js/2.1.8/require.js" type="text/javascript" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/mode-html.js" type="text/javascript" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ace/1.1.01/mode-css.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript" charset="utf-8">
function initialize_editor() {
var editor = ace.edit("html-editor");
editor.setTheme("ace/theme/clouds");
editor.getSession().setMode("ace/mode/html");
editor.setValue($('#template_html').val());
$('form').on('submit', function(event) {
$('#template_html').val(editor.getValue());
});
}
$(document).ready(initialize_editor);
$(document).on('page:load', initialize_editor);
</script>
这抛出了一个
Uncaught TypeError: Cannot read property 'ace/ace' of undefined.
离开页面后,js似乎卡在了页面上,每次加载导航时,我都会得到一个
Uncaught ReferenceError: ace is not defined
.
在这里包含ACE编辑器(或其他外部库)的正确方法是什么?通过链轮加载它们将不起作用,并且在将它们复制到
vendor/javascripts/
并且需要在链轮清单中列出它们,我很难让它正常运行。
关于涡轮连杆和正确的方法有什么启示吗?