【发布时间】:2020-07-23 13:36:27
【问题描述】:
我正在尝试使用 Ruby 2.7.1 和 Rails 6.0.3.2 构建一个 Web 应用程序。在页面上,我希望在用户单击按钮时出现 html 弹出框。我有一些香草 JS 代码,当用户单击按钮时,它只是从我的弹出框 div 中删除了一个 is-hidden 类,从而使弹出框可见。
app/javascript/packs/project.js:
document.addEventListener('turboLinks:load', function () {
const createProjectButton = document.getElementById('create-project-button')
const projectPopover = document.getElementById('create-project-popover')
if (createProjectButton && projectPopover) {
createProjectButton.addEventListener('click', function () {
return projectPopover.classList.contains('is-hidden') ? projectPopover.classList.remove('is-hidden') : null
}, false)
const cancelProjectPopover = document.getElementById('cancel-project-popover')
cancelProjectPopover.addEventListener('click', function () {
return projectPopover.classList.add('is-hidden')
}, false)
}
})
我现在只希望在我的应用程序的一个特定页面上使用此功能,因此我使用 pack 标记将 project.js 包含在相应的 html 文件中。
app/views/project/index.html.erb:
<html>
<body>
...
<%= javascript_pack_tag 'project' %>
</body>
</html>
但是,此代码无法按预期工作。单击相应的按钮不会使我的弹出窗口出现。我可以确认 js 文件正确包含在我的应用程序中,因为我在 project.js 中放置的任何 console.log 语句都将出现在浏览器控制台中。 project.js 中的 js 代码来自一个使用 Rails 5 的教程,所以我猜这可能与最近从资产管道切换到 webpack 有一些关系。
【问题讨论】:
-
你在某处初始化了turbolinks吗?事件名称不都是小写的,即“turbolinks:load”吗?
-
谢谢!!这完全解决了它。我永远不会猜到这实际上是区分大小写的!
标签: javascript html ruby-on-rails