【问题标题】:Turbo-Rails with Devise does not redirect Consistently Rails 6.1.3 Devise 4.7.3 Turbo Rails 0.5.9带有 Devise 的 Turbo-Rails 不会始终如一地重定向 Rails 6.1.3 Devise 4.7.3 Turbo Rails 0.5.9
【发布时间】:2021-06-11 09:22:26
【问题描述】:

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

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

使用 Rails 6.1.3

设计 4.7.3

Turbo Rails 0.5.9


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

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

第 1 步:转到

/users/sign_in

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

点击“登录”

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

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


症状 2

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

第 1 步:登录

第 2 步:点击“退出”

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

结果:页面挂起

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

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

【问题讨论】:

    标签: ruby-on-rails ruby devise turbo-rails


    【解决方案1】:

    这个问题已经在 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

    【讨论】:

    • button_to 在我的情况下不起作用。
    • 也许 button_to 没有使用 POST 方法生成表单?这是因为注销应该被视为非幂等的,这意味着它必须是 POST 而不是 GET,否则您会看到症状。
    • 通过将其添加到按钮修复:form: { "data-turbo" => "false" },问题可能来自 tubo rails。
    • 我看到 PR 还没有被合并,所以我试图在我的设计表单上禁用 Turbo,就像你在上面的答案中一样,但即使这样似乎也不能阻止他们 @987654326 @。除了将html: {'data-turbo' => "false"} 添加到form_for 标记之外,您还有其他更改吗?
    • @mg87 我今天做了,它工作正常,你需要确保HTML键的位置是正确的,这是我的:<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: 'space-y-6', data: { turbo: false } }) do |f| %>
    猜你喜欢
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2022-08-22
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    相关资源
    最近更新 更多