好吧我的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>
将params传递给我的控制器
"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>
在我的控制器中的params我得到一个空字符串
"mode"=>""
答案 0 :(得分:1)
说明问题
我正在设置会话更改的值
editor.getSession().on("change", function () {
$('input[name="mode"]').val(editor.session.getMode().$id);
});
问题是我做出了一个危险的假设,即更改模式被视为会话中的更改事件。经过一些测试后,我注意到它有效,但只有在我提交之前在编辑器中输入。我改为
$(document).click(function() {
$('input[name="mode"]').val(editor.session.getMode().$id);
});
和所有工作