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

Rails使用Devise登录时报No route matches [GET] "/post"错误如何解决?

问题排查方案

你遇到的No route matches [GET] "/post"报错核心原因是当前触发的GET请求地址/post没有在路由表中定义,按以下顺序排查即可定位问题:

  • 首先检查落地页Login按钮的跳转链接配置:打开对应视图文件,确认Login按钮的link_to调用是否正确指向Devise默认登录路径new_user_session_path,如果写死了/post或者其他错误路径直接修正即可。也可以通过浏览器开发者工具的元素面板,直接查看Login按钮的href属性值,确认实际跳转地址是否符合预期。
  • 检查ApplicationController中的Devise跳转自定义逻辑:如果你覆写了after_sign_in_path_for、after_sign_out_path_for或者store_location_for等方法,确认是否误将跳转地址硬编码为了/post,你路由中配置的已登录用户根路径是search#index,正常登录后跳转应该走这个配置,自定义跳转逻辑错误会触发异常跳转。
  • 检查Devise初始化配置:查看config/initializers/devise.rb文件,确认是否修改了sign_in_path、navigation_formats等和登录路径相关的配置,错误的自定义配置会修改Devise默认的登录跳转目标。
  • 确认是否有未完成的POST路由配置:如果你的项目中确实存在/post对应的业务逻辑,但是只配置了POST类型的路由(比如post '/post', to: 'xxx#xxx'),GET请求访问自然会匹配失败,根据业务需求补充GET路由或者调整请求类型即可。

内容的提问来源于stack exchange,提问作者Maxime

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:04