Rails新手求助:访问/games时出现GET请求路由匹配错误
解决Rails中GET /games的路由错误问题
嘿,我来帮你搞定这个头疼的路由问题!
你遇到的No route matches [GET] "/games"错误,核心原因很明确:你的Rails应用里根本没有定义GET /games这个路由。
从你给出的路由列表能看到,目前games相关的路由只有两个:
POST /games(.:format)对应games#create(创建游戏)GET /games/:id(.:format)对应games#show(查看单个游戏详情)
完全没有GET /games对应的index路由——这就是你访问这个地址报错的根源。
怎么解决?
方案1:生成完整的RESTful路由
在你的routes.rb文件里,添加完整的resources :games声明:
Rails.application.routes.draw do resources :newsposts resources :players resources :games # 加上这一行 # 其他路由... end
resources :games会自动生成7个标准RESTful路由,其中就包含GET /games(对应games#index动作)。
方案2:只生成需要的特定路由
如果你不想生成全部7个路由,只想保留index、show、create这几个,可以用only选项精准控制:
resources :games, only: [:index, :show, :create]
验证修改是否生效
修改完路由后,在终端运行命令:
rails routes
如果看到类似下面的条目,就说明GET /games路由已经成功添加了:
games GET /games(.:format) games#index
最后别忘了控制器动作
路由搞定后,还要确保你的GamesController里有index方法,不然访问时会报“动作不存在”的错误:
class GamesController < ApplicationController def index # 这里写你的业务逻辑,比如获取所有游戏 @games = Game.all end # 其他已有的show、create动作... end
内容的提问来源于stack exchange,提问作者Konstantin Faleev
相关产品推荐
相关产品推荐

