我有一张表,它构成了一个非常复杂的时间表。每个 tr 都有一个唯一的 dom id。在呈现日程表时,日程表的时间跨度的持续时间决定了 colspan 属性。例如,一个 9 天的计划跨度将跨越 9 个 tds 并且看起来像一个部分。信息量太大了,真的。
每个 colspan td 都有一个简单的下拉菜单,提供一些快捷方式,例如编辑和删除。整个表被包裹在一个 turbo_frame_tag 中,所以所有的链接(没有 turbo_frame: '_top')都会响应 turbo_stream 格式。删除链接是一个 button_to....来触发销毁操作中的 turbo_stream 响应。
这一切的功能实际上是完美的。如果用户单击给定计划块的下拉列表,单击删除链接... :destroy 操作被命中,记录被销毁,并且该操作响应 turbo_stream...替换整个表行。
问题是......由于某种原因,内容没有在我眼前更新。相反,页面跳回到顶部(没有页面刷新),如果我向下滚动到我所在的位置......内容已通过 TURBO 更新。我记得在老派 JS 中遇到过这样的问题,但为什么 turbo_stream 也会这样做呢?而且,我能做些什么来阻止它吗?
在这样的表中使用 div 不会违反任何标准,但我不禁认为将其转换为由标签等构建的 sudo 表可能会更好。我想知道这样做是否也有帮助上述问题。我不确定为什么会这样,但有时操纵表格似乎会做一些奇怪的事情。
谢谢!
respond_to do |format|
format.turbo_stream {
render turbo_stream: turbo_stream.replace(
"user_#{ user_id }_crew_schedule_row",
partial: 'crew_schedules/partials/schedule_row',
locals: { user: @crew_schedule.user }
)
}
format.html { redirect_to redirect_path }
end