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

Rails路由错误:/assets前缀丢失引发No route matches问题

Rails路由错误排查:请求路径不匹配问题

错误信息

访问目标URL后,日志抛出以下路由错误:

ActionController::RoutingError (No route matches [GET] "/1/day_schedules")

当前路由配置

执行rails routes命令得到的路由列表:

$ rails routes
                Prefix  Verb  URI Pattern                                     Controller#Action
                  root  GET   /                                               home#index
   asset_day_schedules  GET   /assets/:asset_id/day_schedules(.:format)       day_schedules#index
                        POST  /assets/:asset_id/day_schedules(.:format)       day_schedules#create
new_asset_day_schedule  GET   /assets/:asset_id/day_schedules/new(.:format)   day_schedules#new
     edit_day_schedule  GET   /day_schedules/:id/edit(.:format)               day_schedules#edit
          day_schedule  GET   /day_schedules/:id(.:format)                    day_schedules#show

问题矛盾点

实际访问的URL是http://localhost:3000/assets/1/day_schedules,但日志显示系统尝试匹配的是/1/day_schedules,而非预期的/assets/:asset_id/day_schedules路由。

排查与解决建议

  • 检查路由定义顺序:Rails路由按从上到下的顺序匹配,确认是否在asset_day_schedules路由之前存在类似/:id/day_schedules的路由,这类路由会优先拦截请求,导致正确路由无法匹配。
  • 验证实际请求URL:用浏览器开发者工具的网络面板查看发送的真实请求路径,排除前端代码生成URL错误、浏览器缓存等问题导致的路径缺失/assets前缀。
  • 确认资源嵌套配置:确保config/routes.rb中day_schedules是正确嵌套在assets下的,正确写法应为:
resources :assets do
  resources :day_schedules
end

若嵌套语法错误或层级不对,会导致路由生成异常。

  • 重启Rails服务器:路由修改后未重启服务器可能导致新路由未生效,重启服务后再测试请求。

内容的提问来源于stack exchange,提问作者Kevin W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:11