6

这是https://github.com/hotwired/turbo-rails/issues/122的伴侣

复制应用代码:https ://github.com/jasonfb/TR001

使用 Rails 6.1.3

设计 4.7.3

涡轮导轨 0.5.9


症状 1 :
-- 使用 Turbo-Rails + Devise

当我单击“登录”时,表单提交但页面没有重新加载。

第 1 步:转到

/用户/登录

输入一个好的用户名和密码(您可以在命令行注册或制作一个)

在此处输入图像描述

点击“登录”

在此处输入图像描述

在后端,请求被处理甚至重定向,但重定向没有在前端发生。即使您的页面挂起并且没有重定向,您(用户)实际上也已登录。

在此处输入图像描述

结果:页面挂起。预期结果:Turbo Rails 正确重定向


症状 2

当我单击“注销”时,页面什么也不做。在后端我实际上已注销,但页面没有改变。如果我重新加载,我会看到我现在已注销

第一步:登录

第二步:点击“退出” 在此处输入图像描述

请注意,按钮保持“灰色”(单击),请求在后端处理:

在此处输入图像描述

结果:页面挂起

预期结果:用户退出后页面跳转

用户实际上已注销,但页面挂起且未重定向。

4

1 回答 1

11

这已在 Devise 主分支上修复,但截至 2021 年 12 月 29 日,还没有 Devise for Rails 7 的发布版本。如果你想使用来自 Github 的最新 Devise 主分支,这个问题应该不会影响你.

临时解决方法

覆盖设计表单(使用 rails generate devise:views 生成您自己的自定义视图

然后您将编辑注册/新和会话/新修改,如下所示:

form_for(resource, as: resource_name, url: session_path(resource_name) ) do |f|

将其更改为

form_for(resource, as: resource_name, html: {'data-turbo' => "false"}, url: session_path(resource_name) ) do |f|

这告诉 Devise 回退到登录和注册的非 Turbo 交互。

对于您的注销链接,请使用 Rails button_to 而不是 link_to 并且症状消失。 注意:建议作为临时修复,直到解决根本原因

同样,用于 LOGGING OUT 的 button_to 必须是这样的:

, method: :delete, 'data-turbo': false

或者,类似的嵌套语法也data: { turbo: false }应该适用于 form_for 或 button_to

于 2021-03-13T16:19:10.683 回答