在 assets/javascripts 中加入了 direct_upload.js 文件,并在其中加入了以下两个事件监听器:
document.addEventListener("turbolinks:load", function() {
console.log("Turbolinks Loaded.");
})
document.addEventListener("direct-upload:initialize", event => {
const { target, detail } = event
const { id, file } = detail
target.insertAdjacentHTML("beforebegin", `
<div id="direct-upload-${id}" class="direct-upload direct-upload--pending">
<div id="direct-upload-progress-${id}" class="direct-upload__progress" style="width: 0%"></div>
<span class="direct-upload__filename">${file.name}</span>
</div>
`)
})
在确定 application.js 中存在引入 activestorage 的语句//= require activestorage
之后,发现turbolinks:load
事件能够触发其中定义的函数,而direct-upload:initialize
事件则没有触发。
以上代码全都来自Rails Guides ( 顺便提一下:Rails Guides 中文这部分翻译内容暂缺,应该更新了。 )
试问可能是什么原因所导致?
如果可能,感谢分享您的 ActiveStorage 标准做法。