You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7 登出路径找不到问题求助(已添加UJS仍报错)

Rails 7 登出路径不存在问题解决

核心原因

Rails 7 默认使用 Turbo 替代了原有的 UJS,原 UJS 的 method: :delete 参数不再生效,导致 DELETE 请求被当成 GET 请求发送,找不到对应路由。

解决步骤

1. 修改登出链接参数

把原链接的 method: :delete 替换为 Turbo 识别的 data: { turbo_method: :delete }:

<li class="nav-item">
  <%= link_to "Log out", logout_path, data: { turbo_method: :delete }, class: "nav-link" %>
</li>

2. 确认 Turbo 正确引入

检查应用布局文件(如 app/views/layouts/application.html.erb)是否包含 Turbo 引入标签:

<%= turbo_include_tags %>

若使用 Importmap,确保 config/importmap.rb 里有:

pin "@hotwired/turbo-rails", to: "turbo.min.js", preload: true

并在 app/javascript/application.js 中导入:

import "@hotwired/turbo-rails"

3. 验证路由配置

运行命令 rails routes,确认输出中存在如下路由:

logout DELETE /logout(.:format) sessions#destroy

若没有,检查 routes.rb 里的 delete '/logout', to: 'sessions#destroy' 是否书写正确。

4. 确保 CSRF Token 存在

布局文件必须包含 CSRF 元标签,Turbo 会自动携带该 token:

<%= csrf_meta_tags %>

额外排查点

若以上步骤完成仍报错,可尝试:

  • 清除浏览器缓存,确保新的 Turbo 代码被加载
  • 查看浏览器控制台的网络请求,确认请求方法为 DELETE 而非 GET

内容的提问来源于stack exchange,提问作者Afaq Shahid Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:12:41