Jas*_* FB 10 ruby ruby-on-rails devise turbo-rails
这是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
当我单击“注销”时,页面不执行任何操作。在后端,我实际上已注销,但页面没有更改。如果我重新加载,我会看到我现在已注销
第 1 步:登录
请注意,按钮保持“灰色”(单击),请求在后端处理:
结果:页面挂起
预期结果:用户注销后页面跳转
用户实际上已注销,但页面挂起并且不重定向。
Jas*_* FB 17
该问题已在 Devise 主分支上修复,但截至 2021 年 12 月 29 日,Devise for Rails 7 尚未发布版本。如果您想使用 Github 上的 Devise 最新主分支,此问题应该不会影响您。
临时解决方法:
覆盖设计表单(使用rails生成设计:视图生成您自己的自定义视图
然后您将编辑注册/新和会话/新,修改两者,如下所示:
form_for(resource, as: resource_name, url: session_path(resource_name) ) do |f|
Run Code Online (Sandbox Code Playgroud)
将其更改为
form_for(resource, as: resource_name, html: {'data-turbo' => "false"}, url: session_path(resource_name) ) do |f|
Run Code Online (Sandbox Code Playgroud)
这告诉 Devise 在登录和注册时回退到非 Turbo 交互。
对于您的注销链接,请使用 Rails button_to 而不是 link_to,症状就会消失。 注意:建议作为临时修复,直到解决根本原因
同样,用于注销的button_to 必须如下所示:
, method: :delete, 'data-turbo': false
Run Code Online (Sandbox Code Playgroud)
或者,像这样的嵌套语法data: { turbo: false }也应该适用于 form_for 或 button_to
| 归档时间: |
|
| 查看次数: |
5577 次 |
| 最近记录: |