Передать объект javascript без изменений в класс ruby - PullRequest
0 голосов
/ 29 апреля 2018

Мне нужно сохранить объект js в классе ruby, а затем передать его обратно js в целости и сохранности.

просто для некоторого контекста у меня есть запасной вариант, но он не эффективен. Я могу порезать объект js и передать значения в виде строк одну за другой и собрать их обратно вместе, но это много данных.

Со своей стороны js, если я могу сохранить объект js нетронутым, я могу просто передать объект обратно js, и я настроен.

Для дальнейшего контекста я пытаюсь сохранить сеанс редактора ACE ace.edit("editor").getSession(), который возвращает очень много данных, как вы можете видеть ниже

enter image description here

внутри одного из классов Ruby, чтобы потом вернуться к моему js. Сессия редактора содержит множество настроек, таких как языковой режим, тема редактора, перенос размера шрифта, и вы получите все те настройки, которые есть в вашем редакторе в вашей среде, которые мне нужно сохранить. Я уже вернулся к важным, таким как язык и тема, но хочу пропустить весь сеанс, чтобы пользователь-x был как можно ближе к работе с редактором в вашей среде env

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

1 Ответ

0 голосов
/ 30 апреля 2018

JSON - это стандартный способ передачи сложных данных в виде строки.

JS:

var editor = ace.edit("editor");

editor.getSession().on("change", function () {
    var session = ace.edit("editor").getSession();
    var neededData = {};
    neededData.mode = session.mode;
    neededData.fontSize = session.fontSize;
    //passing the mode to input
    $('input[name="mode"]').val(JSON.stringify(neededData));
});

Ruby:

editor_session_hash = JSON.parse(params[:mode])

Теперь вы получите всю сессию в виде рубинового хэша. Весь ваш подход может быть значительно улучшен, но это совсем другая история

В широком смысле вы всегда должны сериализовать (вы можете использовать термин google) свой объект в строку на одной стороне, а затем проанализировать его на другой стороне. Существует несколько известных форматов сериализации, но сейчас вы можете остановиться на JSON и забыть обо всех остальных

...