5

我最近将 Hotwire 添加到我的 Rails 应用程序以更新模式,但这破坏了我将用户重定向到条带的 link_to。我在网上寻找解决方法,但由于 Hotwire 相对较新,我找不到它。有人对让 link_to 与 turbo 流一起使用有什么建议吗?

4

5 回答 5

3

有三种方法(至少)可以恢复默认(非 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 处理(通常会产生意想不到的结果)。

于 2021-08-05T18:40:10.903 回答
0

将 link_to 转换为远程调用的助手当前不适用于 Turbo。已远程的链接不会停留在帧内,也不会允许您使用 turbo 流操作进行响应。建议将这些链接替换为带样式的 button_to,这样您将通过常规表单进行操作,并且您会更好地遵守 a11y。

@edit 在 turbo_frame_tag 上使用 target: "_top" 以启用其中的链接

于 2021-05-18T22:29:14.007 回答
0

如果链接在 a 内部,turbo_frame_tag或者turbo: trueturbo: true任何父元素上全局/设置,则链接将turbo: true表示它不会重定向您,因为它会尝试执行 ajax 请求。尝试做<%= link_to 'Woodoo', root_path, data: { turbo: false } %>

于 2021-06-28T09:14:17.300 回答
0

我遇到了同样的问题,但是

我改变这个

<%= 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>

于 2021-07-19T15:09:23.423 回答
0

如果 a 中有一个链接,您可以通过实现一个称为代表整个页面turbo_frame_tag的特殊框架来使其像往常一样工作。_top只需添加 data: { turbo_frame: "_top" }到您的链接。

link_to "string", object, data: { turbo_frame: "_top" }
于 2022-03-01T19:41:55.453 回答