BEE*_*EEK 7 ruby-on-rails hotwire-rails turbo-rails turbo hotwire
在turbo访问后不会触发turbo:load事件(正如文档所说的那样)。在初始整页加载后,它会按预期工作。我可以捕获“turbo:before-fetch-response”事件,但我对turbo:load、:render、:frame-render、:frame-load 没有运气。
我的 Turbo_stream 请求格式为 TURBO_STREAM 以销毁附件。控制器响应为
respond_to do |format|
format.turbo_stream do
render 'attachments/delete_document',
locals: { target: "docs-list-#{img.id}" }
end
end
Run Code Online (Sandbox Code Playgroud)
我返回两个涡轮流,其更新和删除操作按预期工作:
<turbo-stream action="remove" target="<%= target %>">
<template></template>
</turbo-stream>
<turbo-stream action="update" target="flash_messages">
<template>
<%= render partial: 'layouts/flash', formats: :html,
locals: { type: :notice,
message: 'Attachment removed.' } %>
</template>
</turbo-stream>
Run Code Online (Sandbox Code Playgroud)
(注意:这是另一篇文章的一个亮点。那里提出的解决方案在我的情况下不起作用,因为完整属性仅存在于HTML img 元素。)(我正在使用@hotwired/turbo@^7.1.0,@ Rails 7.0.1 中的 hotwired/turbo-rails@^7.1.1)
我已经通过事件解决了这个问题turbo:render
:
document.addEventListener('DOMContentLoaded', startFrontController)
document.addEventListener('turbo:render', startFrontController)
function startFrontController(event) {
document.removeEventListener('DOMContentLoaded', startFrontController)
new FrontController().start()
}
Run Code Online (Sandbox Code Playgroud)
请参阅 Turbo 事件文档: https: //turbo.hotwired.dev/reference/events