Как добавить текст из события JavaScript в синтаксис Ruby - PullRequest
0 голосов
/ 19 января 2020

Я хочу иметь возможность динамически обновлять синтаксис Ruby во внешнем интерфейсе на основе значения выбора с eventListener или onchange.

Вот мой пример:

Ruby:

<%= if @model.attribute == {javascript_text} %>

и {javascript_text} сможет динамически обновляться на основе изменения события для выбора.

Аналогично тому, как это работает, но вместо этого добавив текст к div, он добавит его в синтаксис Ruby:

<select id="box1" onChange="myNewFunction(this);">
<option value="1">dog</option>
<option value="12">cat</option>
<option value="11">bird</option>
</select>

<div id="test"></div>

JavaScript:

function myNewFunction(element) {
    var text = element.options[element.selectedIndex].text;
    document.getElementById("test").innerHTML = text;
}

http://jsfiddle.net/6dkun/1

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 19 января 2020

Вы не можете. Ваш код rails работает на сервере, а ваш javascript работает на клиенте *. Итак, вы думаете, что все совершенно неправильно.

Ваш сервер rails просто отвечает на входящий HTTP-запрос от клиента. Затем он сопоставляет запрос с контроллером, и контроллер выводит представление в строковый буфер, который отправляется в качестве полезной нагрузки ответа. Для вашего сервера страница - это просто строка, построенная с помощью шаблона erb.

Клиент получает ответ и анализирует его в html документе. Он запускает любой javascript, включенный в документ (встроенный и связанный).

Когда пользователь изменяет выбор, это происходит на его компьютере. Единственный способ сообщить серверу об изменении - это отправить клиенту новый запрос, который может быть синхронным (отправка формы или щелчок по ссылке, заменяющей текущую страницу) или асинхронным (запрос AJAX, отправленный через javascript). Если ваш javascript просто связывает воедино два входа, которые существуют на странице, нет никакой причины, по которой вы вообще должны подключать сервер.

Websockets (ActionCable) - это совсем другая чашка чая, и на самом деле что-то, с чем вам следует разобраться, пока вы на самом деле не поймете основы HTTP и взаимодействия клиент-сервер.

(*) Да, вы можете запустить javascript на своем сервере с node.js (или любым другим * 1020). * время выполнения). Но это не меняет того факта, что пользователь меняет выбор на своей машине, а не на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...