Если ваш файл Javascript включен в конвейер ресурсов, он будет объединен, уменьшен и предварительно обработан в один большой файл .js, который по умолчанию включен в <head>
вашего макета.К тому времени, когда браузер читает этот файл, элемент dom, связанный с классом .dropbtn
, еще не загружен, поэтому прослушиватель событий click
никогда не добавляется.
Решение будет заключаться в переносе вашегокод внутри функции, которая вызывается после загрузки документа:
$(document).ready(function(){
// your code goes here.
});
Однако, если вы используете турболинки (которые по умолчанию включены в рельсы), вам необходимо использовать:
$(document).on('turbolinks:load', function(){
// your code goes here.
});
Причина этого заключается в том, что после загрузки документа турболинки будут обновлять его, а не перезагружать после каждого запроса, поэтому $(document).ready()
будет срабатывать только один раз, тогда как 'turbolinks:load'
будет срабатывать каждый раз, когда содержимое загружается в ваши ссылки.приложение.