ActionController::UrlGenerationError:测试路由匹配失败求助
解决ActionController::UrlGenerationError: No route matches的问题
嘿,这个问题我太熟了!你遇到的路由匹配错误,核心原因是action名称的大小写不匹配——Rails的路由系统对action名称的大小写是敏感的,你测试代码里用了大写的:Show,但实际定义的路由对应的action是小写的:show,这就导致系统找不到对应的映射关系。
看你提供的测试代码片段:
test "should get show action when logged in" do
log_in_as(@other_user)
get :Show, params: {id: @team}
assert_response :success
assert_template 'te...
这里的get :Show就是问题所在,只需要把它改成小写的:show就能解决这个错误。另外还有个小建议:params里的id最好直接传@team.id,避免对象隐式转换可能带来的意外问题,修复后的代码应该是这样:
test "should get show action when logged in" do log_in_as(@other_user) get :show, params: {id: @team.id} assert_response :success assert_template 'teams/show' # 这里可以补全模板名称,让测试更清晰 end
如果修改后还是有问题,你可以在终端运行这个命令确认路由是否正确定义:
rails routes
在输出里找有没有GET /teams/:id对应的teams#show条目,确认路由确实存在且配置正确。
内容的提问来源于stack exchange,提问作者Opy Osegs
相关产品推荐
相关产品推荐

