Rails教程sample_app在Heroku中失败,带有log:ActionController :: RoutingError(没有路由匹配“/ about”):

我正在关注Rails教程的在线版本。 第3章中的Sample_app在本地工作正常,但是当推送到Heroku时,会找到主页,但不会找到其他页面。 尝试查看“关于”页面后运行heroku日志会给我(以及其他许多内容)上面的错误:

2015-08-09T02:56:43.916991+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/about"):

我的routes.rb文件是

 Rails.application.routes.draw do root 'static_pages#home' get 'static_pages/help' get 'static_pages/about' end 

我仔细地按照指示行事。 我尝试删除并重新创建Heroku文件。 我做了网络搜索,尝试了一些无济于事的事情。 我的gemfile直接来自本书的在线版本,该版本使用当前版本。


解决了: #thedanotto让我运行heroku run rake routes ,显示帮助和关于页面被定向到{root} / static_pages / about而不是{root} / about。 我仍然感到困惑,为什么教程给出了关于路线,看起来没有按预期工作,并欢迎任何进一步的评论,但我将此标记为已解决。

每当我找不到路线时,我都会运行终端命令

 rake routes 

既然你在heroku上,你就会想要跑步

 heroku run rake routes 

这将返回类似于以下内容。

 Prefix Verb URI Pattern Controller#Action static_pages_about GET /static_pages/about(.:format) static_pages#about 

所以这表明你可以去www.[heroku_app_name].herokuapp.com/static_pages/about它会带你到你想要的页面。 您还可以通过在视图中放置以下代码行来添加视图中页面的链接。

 <%= link_to("About", static_pages_about_path) %> 

这一切都是好事要知道。 但是让我们谈谈使用控制器动作: static_pages#about with path /about

routes.rb切换以下内容

 get 'static_pages/about' 

 get "static_pages/about", path:"/about" 

或者

 get "/about", to: "rabbits#about" 

您可以在此处阅读有关路线的更多信息

如果它在本地工作正常,我假设您已正确设置控制器,视图等

您是否已确保提交所有必要的更改然后推送?

例如

 git add . git commit -am "Added route" git push heroku master 

您是否使用以下URL访问about页面? http://YourHerokuAppName.herokuapp.com/static_pages/about

[用您的Heroku应用程序名称替换“YourHerokuAppName”]