Hotwire 断开 link_to rails

问题描述

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

解决方法

将 link_to 转换为远程调用的助手目前不适用于 Turbo。远程链接不会停留在帧内,也不会允许您使用 Turbo 流操作进行响应。建议将这些链接替换为样式化的 button_to,这样您就可以浏览常规表单,并且符合 a11y 要求会更好。

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

,

如果链接在带有 turbo_frame_tagturbo: 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>

,

有三种方法(至少)可以恢复默认(非 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",target: "_top" %>
(or in plain html)
<a href="" target="_top">

3:将链接移到任何 Turbo 框架之外。 Turbo 框架内的任何链接,如果没有上述属性之一,将默认由 Turbo 处理(通常会产生意想不到的结果)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...