Комментарий Абдул верен.Позвольте мне подробно объяснить вам, как работает рендеринг Rails и JS.
Когда вы вводите URL в адресную строку, скажем http://url.com/articles/1
, Rails получает этот запрос и ищет действие Articles#show
, а затем преобразует show.html.erb
файл в .html
файл (+ заменяет динамический материал в этом файле), а затем отправляет этот HTML-файл в браузер.Все это происходит на стороне сервера.Ваш JS в браузере до сих пор не имеет к этому никакого отношения.
Теперь, когда ваш браузер получает HTML (+ файлы CSS и JS), браузер отобразит HTML-файл и теперь выполнит JSв браузере.Итак, теперь ваша btn_plus.addEventListener
функция выполнена.Он ничего не сделает для части рельсов, он просто обновит DOM.Вот почему, когда вы просматриваете инструменты разработки, вы увидите
<%= select_tag :rg1, options_from_collection_for_select(@users, 'id', 'email') %>
, а не тег <select></select>
.
Вы можете сделать что-то подобное.Включите ваш <%= select_tag :rg1, options_from_collection_for_select(@users, 'id', 'email') %>
, где вы хотите, в свой файл .html.erb
.Тогда в вашем JS вы можете сделать что-то вроде этого:
const rg1 = document.getElementById('rg1');
const btn_plus = document.getElementById('btn_plus'); // change your ID here if it's different
// Hide the select tag
rg1.style.display = 'none';
// On btn click, show the select tag:
btn_plus.addEventListener('click', () => {
rg1.style.display = 'inline-block'; // or `block` or anything you want
});