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