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

Ruby on Rails删除List后触发ActiveRecord::RecordNotFound错误求助

问题分析与解决方案

核心问题拆解

从服务器日志可明确:

  1. 删除操作已成功执行:List(id=27)及其关联的ActiveStorage附件均被正确删除,事务提交完成。
  2. 重定向目标路由不存在:删除后控制器尝试跳转到/lists,但该路由未定义,触发RoutingError。
  3. 后续无效请求触发404:系统随后发起GET /lists/27请求,此时该记录已被删除,因此抛出RecordNotFound错误。

具体修复步骤

1. 补全缺失的路由

打开config/routes.rb,确保存在Lists的索引路由。若使用RESTful路由,添加:

resources :lists

若不需要完整RESTful路由,至少添加索引路由:

get '/lists', to: 'lists#index', as: :lists

2. 调整删除后的重定向目标

修改ListsController的destroy动作,确保重定向到存在的有效页面:

  • 若跳转到当前用户的列表页:
def destroy
  @list.destroy
  redirect_to user_lists_path(current_user), notice: 'List deleted successfully'
end
  • 若已有lists#index路由,保持重定向但确保路由存在:
def destroy
  @list.destroy
  redirect_to lists_path, notice: 'List deleted successfully'
end

3. 排查Turbo相关的额外请求(可选)

由于删除请求为TURBO_STREAM格式,Turbo可能在重定向失败后尝试回退到原页面(/lists/27),可优化button_to的Turbo适配:

<li><%= button_to 'Delete post', @list, method: :delete, class:"dropdown-item", data: { turbo_method: :delete } %></li>

验证修复

  1. 重启Rails服务器
  2. 再次尝试删除List记录,确认:
    • 记录被成功删除
    • 页面跳转到正确的目标路由
    • 无404或RecordNotFound错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 05:22:24