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

时间:2015-08-10 05:57:00

标签: ruby-on-rails heroku railstutorial.org

我正在关注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。我仍然感到困惑,为什么教程提供了关于路线,看起来没有按预期工作,并欢迎任何进一步的评论,但我将此标记为已解决。

3 个答案:

答案 0 :(得分:0)

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

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

e.g。

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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和路径/about

routes.rb中切换以下内容

get 'static_pages/about'

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

或者

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

您可以阅读有关Routes here

的更多信息