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

Rails出现No route matches [POST] "/events/new"错误如何解决?

问题修复方案

核心故障原因

你提交的POST请求地址与路由定义不匹配,同时存在冗余路由、代码变量错误等问题,按以下步骤逐一修复即可:


1. 修正表单提交路径

当前表单配置url: new_event_path, method: "post"错误:从路由输出可确认new_event_path仅支持GET请求,对应新建页面的访问路由,不接收POST提交。
修改app/views/events/forms/new/_form.html.haml的表单定义,直接用Rails RESTful约定写法(自动适配新建/编辑场景,自动匹配请求方法和提交地址):

= form_with model: @event do |f|

若要显式指定提交地址,也可替换为:

= form_with url: events_path, method: "post" do |f|

2. 清理冗余路由

你之前执行rails g controller Events new create edit update destroy index show时,Rails自动在routes.rb中生成了一堆单独的GET动作路由(就是路由输出顶部的events_new、events_create等路由),和resources :events生成的标准RESTful路由重复,容易引发匹配冲突。
打开config/routes.rb,删除所有resources :events之外的、和events动作相关的单独路由配置,仅保留resources :events即可。

3. 修复其他隐含错误

  • 错误提示组件变量错误:app/views/events/forms/parts/_errors.html.haml中的event.errors.each改为@event.errors.each,否则表单校验失败时会报变量未定义错误。
  • 创建成功跳转地址错误:控制器create动作中的redirect_to event改为redirect_to @event,否则事件保存成功后跳转时会报错。

验证

全部修改完成后重启Rails服务,重新提交表单即可正常触发create动作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 17:24:08