Javascript (U JS) ошибка при использовании webpacker в рельсах 6 - PullRequest
0 голосов
/ 12 января 2020

У меня очень простое c rails 6 приложение, созданное с одним контроллером и индексным представлением, которое выглядит следующим образом:

$ cat app/views/welcome/index.html.erb 
<%= javascript_pack_tag 'hide_link' %>

<%= link_to "back here", root_url %>
  <br \>
<%= link_to "Should Disappear", root_path, id: 'be_gone', remote: true %>

Включение javascript в hide_link выглядит так:

$ cat app/javascript/packs/hide_link.js 
window.addEventListener('load', () => {
//document.addEventListener('DOMContentLoaded', () => {
//window.onload = () => {
    let link = document.getElementById('be_gone');

    if (link) {
        link.onclick = () => link.style.display = "none";
    }

    console.log("In hide_link"); // just here to let me know it is running
} , false);

После запуска сервера на странице точно отображаются 2 ссылки, и у меня есть инструменты разработчика, открытые на странице консоли, чтобы увидеть мое сообщение "In hide_link". Также отображается следующая информация:

hide_link.js:10

Это появляется в правой части консоли. Если щелкнуть ссылку «Должно исчезнуть», она фактически исчезает при нажатии, но, когда я нажимаю ссылку «Назад сюда», страница обновляется, и в окне консоли вносятся следующие изменения:

hide_link.js:10

#replaced by

VM58 hide_link-8e7e6…20e4f0e3eed3.js:107

Теперь VM58 и случайные символы после hide_link - меняются каждый раз, когда я повторяю процесс, но проблема в том, что с этого момента, хотя я могу еще раз увидеть ссылку «Следует исчезнуть», после нажатия на нее больше не исчезнет, ​​пока Я обновляю sh всю страницу !!

Итак, мой вопрос: кто-нибудь сталкивался с этой проблемой и, следовательно, с решением?

Кроме того, это проблема с rails 6, webpacker или javascript или сочетание одного или всех?

Пожалуйста, дайте мне знать, если какая-либо дополнительная информация может быть предоставлена, чтобы помочь в решении?

1 Ответ

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

Оказывается, решение можно найти на следующей странице:

https://guides.rubyonrails.org/working_with_javascript_in_rails.html#page -change-events

И суть заключается в том, чтобы изменить следующее:

window.addEventListener('load', () => {

# to

window.addEventListener('turbolinks:load', () => {

Все мои javascript-скрипты работают даже после того, как перенаправлены обратно на ту же страницу по ссылке

...