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”]
- 在Heroku环境中将POST请求视为GET
- `parse_rackup_file’:rackup文件(config.ru)不可读(ArgumentError)
- 推送到heroku的应用程序仍显示标准索引页面
- 密钥就在那里,但我仍然得到`fetch’:找不到密钥:“S3_BUCKET_NAME”(KeyError)
- Rails Heroku服务器回形针Amazon S3 – AWS :: S3 :: Errors :: RequestTimeout
- 如何解析位于Amazon S3存储桶中的CSV文件
- 如何在Heroku上安装ffi
- rake资产:预编译中止,无法推送到heroku
- carrierwave Excon :: Errors :: SocketError