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

Rails应用删除产品按钮报错:No route matches [DELETE] "/"

解决Rails删除按钮"No route matches [DELETE] "/""错误

你的问题可以通过以下两步修复:

1. 修正按钮的路径参数错误

你视图中删除按钮的despensa_path(id)存在变量未定义问题——循环遍历的是produto对象,应该传入produto.id或直接传入produto(Rails会自动提取对象ID)。

修改后的按钮代码:

<%= button_to "Remover", despensa_path(produto), method: :delete,
     class:"btn btn-danger",
     onclick: "return confirm('Tem certeza que deseja remover #{produto.nome} da despensa?')" %>

错误原因:未定义的id会被识别为nil,导致路由助手生成错误的根路径/,而你的路由中没有配置DELETE /规则,因此触发路由匹配失败的报错。

2. 确保Rails UJS/Turbo正常加载

Rails的method: :delete依赖UJS(或Rails 7+的Turbo)实现请求方法转换——浏览器原生不支持DELETE类型表单,需要通过JS将POST请求转换为DELETE请求。

  • 若为Rails 5-6版本:检查application.js是否包含以下依赖
    //= require rails-ujs
    //= require jquery
    
  • 若为Rails 7+版本:确保application.html.erb中加载了Turbo脚本
    <%= javascript_importmap_tags %>
    

验证方式:查看页面源代码,删除按钮对应的表单应包含name="_method" value="delete"的隐藏字段,同时页面底部有对应JS脚本的加载记录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:20:32