редактор ace - режим прохождения для ввода формы - PullRequest
0 голосов
/ 01 мая 2018

Хорошо, поэтому в моем 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"=>""

1 Ответ

0 голосов
/ 02 мая 2018

выяснил проблему

Я устанавливал значение при смене сеанса

editor.getSession().on("change", function () {

    $('input[name="mode"]').val(editor.session.getMode().$id);

});

проблема заключалась в том, что я сделал опасное предположение, что изменение режима считалось событием изменения в сеансе. После некоторого тестирования я заметил, что это сработало, но только когда я набрал текст в редакторе перед отправкой. Я изменил на

$(document).click(function() {

    $('input[name="mode"]').val(editor.session.getMode().$id);

});

и все работает

...