【发布时间】:2021-07-24 01:57:04
【问题描述】:
我最近将 Hotwire 添加到我的 Rails 应用程序以更新模式,但这破坏了我将用户重定向到条带的 link_to。我在网上寻找解决方法,但由于 Hotwire 相对较新,我找不到它。有人对让 link_to 与 turbo 流一起使用有什么建议吗?
【问题讨论】:
标签: ruby-on-rails hotwire-rails
我最近将 Hotwire 添加到我的 Rails 应用程序以更新模式,但这破坏了我将用户重定向到条带的 link_to。我在网上寻找解决方法,但由于 Hotwire 相对较新,我找不到它。有人对让 link_to 与 turbo 流一起使用有什么建议吗?
【问题讨论】:
标签: ruby-on-rails hotwire-rails
有(至少)三种方法可以恢复默认(非 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 处理(通常会出现意外结果)。
【讨论】:
如果链接在turbo_frame_tag 内部,并且turbo: true 或turbo: true 设置为全局/在任何父元素上,则链接将充当turbo: true,这意味着它不会重定向您将尝试执行 ajax 请求。试试<%= link_to 'Woodoo', root_path, data: { turbo: false } %>
【讨论】:
将 link_to 转换为远程调用的帮助程序目前不适用于 Turbo。已远程的链接不会停留在帧内,也不会允许您使用 turbo 流操作进行响应。建议用带样式的 button_to 替换这些链接,这样您就可以通过常规表单进行操作,并且最好遵守 a11y。
@编辑 在 turbo_frame_tag 上使用 target: "_top" 来启用其中的链接
【讨论】:
我遇到了同样的问题,但是
我改了
<%= 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>
【讨论】: