Ruby on Rails:生成控制器后访问/routeplanner遇路由匹配错误
解决Rails中「No route matches [GET] "/routeplanner"」的问题
嘿,刚接触Rails碰到路由问题太正常了,别慌!咱们一步步来排查解决:
首先说下问题根源:你当前的routes.rb只配置了**根路径(/)**指向routeplanner#index,但并没有为/routeplanner这个路径单独设置路由规则,所以当你访问这个地址时,Rails找不到对应的匹配规则,就抛出了这个错误。
给你两种简单的解决方法,选一种适合你的就行:
方法一:添加单个GET路由
直接在routes.rb里新增一行,明确指定/routeplanner路径对应到控制器的index动作:
Rails.application.routes.draw do root :to => 'routeplanner#index' get '/routeplanner', to: 'routeplanner#index' # 新增这一行 end
方法二:用resources生成RESTful路由
如果你之后可能需要给这个控制器加其他动作(比如create、show之类的),可以用resources来生成标准的RESTful路由,这里我们可以只生成index动作的路由:
Rails.application.routes.draw do root :to => 'routeplanner#index' resources :routeplanner, only: [:index] # 仅生成index对应的路由 end
验证路由是否生效
修改完routes.rb后,在终端里运行命令:
rails routes
这个命令会列出当前所有可用的路由,你只要能看到/routeplanner对应的条目,就说明配置成功了。
额外注意点
还要确认你的routeplanner_controller.rb里的控制器类名是正确的,应该是驼峰式的:
class RouteplannerController < ApplicationController def index # 这里放你的index动作逻辑 end end
最后,要是你之前已经启动了服务器,最好重启一下(开发模式下虽然大部分修改会自动重载,但路由修改偶尔需要手动重启才能生效),然后再访问/routeplanner应该就没问题啦!
内容的提问来源于stack exchange,提问作者dotnetdevcsharp
相关产品推荐
相关产品推荐

