【发布时间】:2021-12-27 00:12:32
【问题描述】:
我有一张表,它构成了一个非常复杂的时间表。每个 tr 都有一个唯一的 dom id。在呈现日程表时,日程表的时间跨度的持续时间决定了 colspan 属性。例如,一个 9 天的计划跨度将跨越 9 个 tds 并且看起来像一个部分。信息太多了,真的。
每个 colspan td 都有一个简单的下拉菜单,提供一些快捷方式,例如编辑和删除。整个表被包裹在一个 turbo_frame_tag 中,所以所有的链接(没有 turbo_frame: '_top')都会响应 turbo_stream 格式。删除链接是button_to....在destroy动作中触发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
【问题讨论】:
-
我无法解释为什么......但是,我能够将其追溯到字体真棒 标签。在我需要使用 turbo_stream 替换的表格部分中,我将字体很棒的标签换成了下垂图像……然后问题就消失了。很奇怪。
标签: ruby-on-rails hotwire-rails turbo