Turbo-Rails with Devise 不会一致地重定向 Rails 6.1.3 Devise 4.7.3 Turbo Rails 0.5.9
Turbo-Rails with Devise does not redirect Consistently Rails 6.1.3 Devise 4.7.3 Turbo Rails 0.5.9
这是 https://github.com/hotwired/turbo-rails/issues/122
的伴侣
复制应用程序代码:https://github.com/jasonfb/TR001
正在使用
Rails6.1.3
设计 4.7.3
涡轮增压 Rails 0.5.9
症状 1:
-- 使用 Turbo-Rails + Devise
当我点击“登录”时,表单提交但页面没有重新加载。
第 1 步:转到
/users/sign_in
输入一个好的用户名和密码(您可以在命令行上注册或创建一个)
点击“登录”
在后端请求被处理甚至重定向,但重定向并没有发生在前端。您(用户)ARE 实际上登录了,即使您的页面挂起并且没有重定向。
结果:页面挂起。
预期结果:Turbo Rails 正确重定向
症状 2
当我点击“注销”时,页面没有任何反应。
在后端,我实际上已注销,但页面没有改变。
如果我重新加载,我会看到我现在已注销
第 1 步:登录
第2步:点击“退出”
注意按钮保持'grey'(点击),请求在后端处理:
结果:页面挂起
预期结果:用户注销后页面指向
用户实际上已注销,但页面挂起且未重定向。
这已在 Devise 主分支上修复,但截至 2021-12-29 还没有针对 Rails 7 的 Devise 发布版本。如果您想使用 Devise 的最新主分支来自Github,这个问题应该不会影响到你。
临时解决方法:
覆盖设计表单(使用 rails 生成 devise:views 生成您自己的自定义视图
然后你将编辑 registrations/new 和 sessions/new 像这样修改:
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 并且症状消失。
注意:建议作为临时修复,直到解决根本原因
同样,button_to 用于注销必须像这样:
, method: :delete, 'data-turbo': false
或者,像 data: { turbo: false }
这样的嵌套语法也应该适用于 form_for 或 button_to
这是 https://github.com/hotwired/turbo-rails/issues/122
的伴侣复制应用程序代码:https://github.com/jasonfb/TR001
正在使用 Rails6.1.3
设计 4.7.3
涡轮增压 Rails 0.5.9
症状 1:
-- 使用 Turbo-Rails + Devise
当我点击“登录”时,表单提交但页面没有重新加载。
第 1 步:转到
/users/sign_in
输入一个好的用户名和密码(您可以在命令行上注册或创建一个)
点击“登录”
在后端请求被处理甚至重定向,但重定向并没有发生在前端。您(用户)ARE 实际上登录了,即使您的页面挂起并且没有重定向。
结果:页面挂起。 预期结果:Turbo Rails 正确重定向
症状 2
当我点击“注销”时,页面没有任何反应。 在后端,我实际上已注销,但页面没有改变。 如果我重新加载,我会看到我现在已注销
第 1 步:登录
第2步:点击“退出”
注意按钮保持'grey'(点击),请求在后端处理:
结果:页面挂起
预期结果:用户注销后页面指向
用户实际上已注销,但页面挂起且未重定向。
这已在 Devise 主分支上修复,但截至 2021-12-29 还没有针对 Rails 7 的 Devise 发布版本。如果您想使用 Devise 的最新主分支来自Github,这个问题应该不会影响到你。
临时解决方法:
覆盖设计表单(使用 rails 生成 devise:views 生成您自己的自定义视图
然后你将编辑 registrations/new 和 sessions/new 像这样修改:
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 并且症状消失。 注意:建议作为临时修复,直到解决根本原因
同样,button_to 用于注销必须像这样:
, method: :delete, 'data-turbo': false
或者,像 data: { turbo: false }
这样的嵌套语法也应该适用于 form_for 或 button_to