Turbolinks 加载事件从未在全新的 Rails 5.1 应用程序中触发
Turbolinks load event never firing in brand new Rails 5.1 app
出于某种原因,Turbolinks 没有在我的应用程序中触发加载事件,这是一个全新的、最近创建的应用程序。
我使用 rails new
(特别是 rails new prueba -C -d postgresql --skip-coffee --no-api
)创建了一个全新的 Rails 5.1 应用程序 (5.1.4)。此命令自动配置 Rails 以使用 Turbolinks,无需进一步手动配置。
然后我为模型创建了一个脚手架 (bin/rails g scaffold Thing name
),只是为了导航到一些页面。
最后,我创建了一个包含以下内容的文件app/assets/javascripts/test.js
:
document.addEventListener("turbolinks.load", function() {
console.log("Turbolinks loaded")
});
运行迁移后,我 运行 开发中的服务器 (bin/rails s
),浏览(尝试使用 Chrome v62 和 Firefox v57),并检查开发人员工具控制台,但没有看到 "Turbolinks loaded" 消息,我什么也没得到:
- 当我访问
/things
时,控制台是空的
- 如果我重新加载同一页面,控制台仍然是空的
- 如果我按照"New thing" link,控制台还是空的
- 如果,在"New thing"页面我跟着"Back"link,控制台还是空的
[...] the turbolinks:load event, which fires once on the
initial page load and again after every Turbolinks visit.
因此我希望每次都能在控制台中看到消息 "Turbolinks loaded"。
有什么想法吗?
根据您的代码,您大多错过了事件名称。您使用 turbolinks.load
,而实际上它是 turbolinks:load
。查看此 url 了解更多详情 -- https://github.com/turbolinks/turbolinks#running-javascript-when-a-page-loads
出于某种原因,Turbolinks 没有在我的应用程序中触发加载事件,这是一个全新的、最近创建的应用程序。
我使用 rails new
(特别是 rails new prueba -C -d postgresql --skip-coffee --no-api
)创建了一个全新的 Rails 5.1 应用程序 (5.1.4)。此命令自动配置 Rails 以使用 Turbolinks,无需进一步手动配置。
然后我为模型创建了一个脚手架 (bin/rails g scaffold Thing name
),只是为了导航到一些页面。
最后,我创建了一个包含以下内容的文件app/assets/javascripts/test.js
:
document.addEventListener("turbolinks.load", function() {
console.log("Turbolinks loaded")
});
运行迁移后,我 运行 开发中的服务器 (bin/rails s
),浏览(尝试使用 Chrome v62 和 Firefox v57),并检查开发人员工具控制台,但没有看到 "Turbolinks loaded" 消息,我什么也没得到:
- 当我访问
/things
时,控制台是空的 - 如果我重新加载同一页面,控制台仍然是空的
- 如果我按照"New thing" link,控制台还是空的
- 如果,在"New thing"页面我跟着"Back"link,控制台还是空的
[...] the turbolinks:load event, which fires once on the initial page load and again after every Turbolinks visit.
因此我希望每次都能在控制台中看到消息 "Turbolinks loaded"。
有什么想法吗?
根据您的代码,您大多错过了事件名称。您使用 turbolinks.load
,而实际上它是 turbolinks:load
。查看此 url 了解更多详情 -- https://github.com/turbolinks/turbolinks#running-javascript-when-a-page-loads