ace 编辑器 - 将模式传递给表单输入
ace editor - passing mode to form input
好的,所以在我的 js 中,我将输入值设置为 js 值
$('input[name="mode"]').val(editor.session.getMode().$id);
这在我的新视图表单中工作正常
<form id="snippetForm" action="/snippets/new" method="POST">
<input class="hidden" type="text" name="mode" form="snippetForm"/>
</form>
将参数传递给我的控制器
"mode"=>"ace/mode/ruby"
但是当我对更新表单执行相同操作时
<form id="snippetForm" action="/snippets/<%= @snippet.id %>/edit" method="POST">
<input class="hidden" type="text" name="mode" form="snippetForm"/>
<input id="hidden" type="hidden" name="_method" value="patch">
</form>
在控制器的参数上我得到一个空字符串
"mode"=>""
解决问题
我正在设置会话更改时的值
editor.getSession().on("change", function () {
$('input[name="mode"]').val(editor.session.getMode().$id);
});
问题是我做了一个危险的假设,即更改模式被视为会话中的更改事件。经过一些测试后,我注意到它有效,但只有当我在提交前在编辑器中输入时才有效。我改为
$(document).click(function() {
$('input[name="mode"]').val(editor.session.getMode().$id);
});
所有工作
好的,所以在我的 js 中,我将输入值设置为 js 值
$('input[name="mode"]').val(editor.session.getMode().$id);
这在我的新视图表单中工作正常
<form id="snippetForm" action="/snippets/new" method="POST">
<input class="hidden" type="text" name="mode" form="snippetForm"/>
</form>
将参数传递给我的控制器
"mode"=>"ace/mode/ruby"
但是当我对更新表单执行相同操作时
<form id="snippetForm" action="/snippets/<%= @snippet.id %>/edit" method="POST">
<input class="hidden" type="text" name="mode" form="snippetForm"/>
<input id="hidden" type="hidden" name="_method" value="patch">
</form>
在控制器的参数上我得到一个空字符串
"mode"=>""
解决问题
我正在设置会话更改时的值
editor.getSession().on("change", function () {
$('input[name="mode"]').val(editor.session.getMode().$id);
});
问题是我做了一个危险的假设,即更改模式被视为会话中的更改事件。经过一些测试后,我注意到它有效,但只有当我在提交前在编辑器中输入时才有效。我改为
$(document).click(function() {
$('input[name="mode"]').val(editor.session.getMode().$id);
});
所有工作