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
相关产品推荐
相关产品推荐

