Rails 6 Hotwire环境下如何为指定link_to强制触发全页面加载?
配置方法
针对你的需求,有两种常用的实现方案:
- 单个链接指定跳过Hotwire Turbo跳转
直接给对应link_to添加data-turbo="false"属性,点击链接时会强制触发全页面加载:
HAML模板写法:<%= link_to "cool page", "/cool_page", data: { turbo: false } %>= link_to "cool page", "/cool_page", data: { turbo: false } - 目标页面全局强制全页加载
如果你希望所有跳转到该页面的场景都自动触发全页刷新,不需要修改所有入口链接,可以直接在目标页面的head区域添加Turbo访问控制元标签:
ERB模板写法:
HAML模板写法:<meta name="turbo-visit-control" content="reload">%meta{name: "turbo-visit-control", content: "reload"}
补充说明
你遇到的初始化代码失效问题本质是Hotwire Turbo的页面替换逻辑不会触发原生的document.ready事件,如果后续你希望适配Turbo逻辑不用全页刷新,可将初始化代码改为监听turbo:load事件:
document.addEventListener('turbo:load', function() { // 第三方组件初始化代码 })
内容的提问来源于stack exchange,提问作者jpw
相关产品推荐
相关产品推荐

