我最近将 Hotwire 添加到我的 Rails 应用程序以更新模式,但这破坏了我将用户重定向到条带的 link_to。我在网上寻找解决方法,但由于 Hotwire 相对较新,我找不到它。有人对让 link_to 与 turbo 流一起使用有什么建议吗?
5 回答
有三种方法(至少)可以恢复默认(非 Turbo)链接行为。
1:将 data-turbo 属性设置为 false。
<%= link_to "Click Here", path_helper_method, data: { turbo: false } %>
(or in plain html)
<a href="" data-turbo="false">
2:设置目标属性。
<%= link_to "Click Here", path_helper_method, target: "_top" %>
(or in plain html)
<a href="" target="_top">
3:将链接移到任何 Turbo 框架之外。Turbo 框架内的任何链接,如果没有上述属性之一,将默认由 Turbo 处理(通常会产生意想不到的结果)。
将 link_to 转换为远程调用的助手当前不适用于 Turbo。已远程的链接不会停留在帧内,也不会允许您使用 turbo 流操作进行响应。建议将这些链接替换为带样式的 button_to,这样您将通过常规表单进行操作,并且您会更好地遵守 a11y。
@edit 在 turbo_frame_tag 上使用 target: "_top" 以启用其中的链接
如果链接在 a 内部,turbo_frame_tag
或者turbo: true
在turbo: true
任何父元素上全局/设置,则链接将turbo: true
表示它不会重定向您,因为它会尝试执行 ajax 请求。尝试做<%= link_to 'Woodoo', root_path, data: { turbo: false } %>
我遇到了同样的问题,但是
我改变这个
<%= link_to "Create A Comment", new_model_post_comment_path(@model_post.id),method: :get%> </span>
对此,它对我有用
<%= link_to "Create A Comment", new_model_post_comment_path(@model_post.id)%> </span>
如果 a 中有一个链接,您可以通过实现一个称为代表整个页面turbo_frame_tag
的特殊框架来使其像往常一样工作。_top
只需添加 data: { turbo_frame: "_top" }
到您的链接。
link_to "string", object, data: { turbo_frame: "_top" }