Единственный способ передать переменную из JavaScript, работающей на клиенте, в Rails, работающую на сервере, - это отправить HTTP-запрос.
Код выполняется в двух совершенно разных процессах, на разных машинах и в разное время. Это относится не только к rails, но и в любое время, когда вы генерируете JavaScript на сервере - на любом языке / фреймворке.
Ваш шаблон js.erb
сначала запускается через ERB на вашем сервере. Который просто обрабатывает его как строковый буфер и оценивает любые содержащиеся в нем теги ERB. Затем Rails отправляет результат клиенту, который на самом деле запускает javascript. Таким образом, для rails невозможно узнать значение переменной, полученной из элемента, который может даже не существовать, когда код выполняется через ERB.
Если вы хотите заполнить a select значениями из вашего сервер, вам нужно сделать AJAX запрос к серверу, который либо возвращает JSON, который вы используете для построения элементов, либо javacript, представленный шаблоном js.erb
, который изменяет страницу, если вы хотите go дальше по этой кроличьей норе.