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

Rails报错No route matches [GET] "/show/:id",Show路由异常

问题解决:Rails中Gods列表页查看链接路由错误

核心问题分析

  1. 路由规则不匹配:你硬编码了路径字符串'gods/show/:id',但Rails的RESTful路由规范中,单个资源的详情路径是/gods/:id,而非/show/:id。
  2. link_to参数误用:循环中遍历的是@g.each do |x|,每个资源对象是x,而非集合@g,之前用god_path(@g)会因为传入集合而非单个对象导致nil id错误。

分步解决

1. 配置RESTful路由

打开config/routes.rb,添加RESTful路由规则,自动生成index、show等标准路由:

Rails.application.routes.draw do
  resources :gods
end

执行rails routes命令可查看生成的路由,其中show路由的辅助方法为god_path,对应路径/gods/:id。

2. 修正index视图的查看链接

修改index视图中的link_to代码,传入循环中的单个对象x,使用路由辅助方法生成正确路径:

<td><%= link_to 'view', god_path(x) %></td>

此时每个链接会生成对应God对象的详情路径(如/gods/1、/gods/2)。

3. 优化控制器跳转(可选)

控制器create方法中的硬编码跳转可替换为标准路由辅助方法,更符合Rails规范:

redirect_to gods_path

验证

重启Rails服务器,访问index页面,点击"view"链接即可正常跳转到对应God对象的详情页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:27:00