Rails Tutorial sample_app fails in Heroku with log: ActionController::RoutingError (No route matches [GET] “/about”):

柔情痞子 提交于 2019-12-08 09:40:13

问题


I am following the online version of Rails Tutorial. The Sample_app in chapter 3 works fine locally, but when pushed to Heroku, the home page is found but not the other pages. Running heroku logs after trying to see the About page gives me (along with much else) the error above:

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

My routes.rb file is

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

I have followed the directions carefully. I tried deleting and recreating the Heroku file. I did web searches and tried some things to no avail. My gemfile is straight from the online version of the book, which is using current versions.


Solved: #thedanotto had me run heroku run rake routes which showed that the help and about pages were directed to {root}/static_pages/about rather than {root}/about. I am still puzzled why the tutorial gives the about routes, which appear not to work as expected, and welcome any further comment, but I am marking this as solved.


回答1:


Whenever I can't find a route, I run the terminal command

rake routes

Since you're on heroku you'll want to run

heroku run rake routes

Which will return something similar to the following.

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

So that shows that you can go to www.[heroku_app_name].herokuapp.com/static_pages/about And it will bring you to the page you want. You can also add a link to the page in a view by putting the following line of code within a view.

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

That's all good stuff to know. But let's talk about using the controller action: static_pages#about with the path /about

Switch the following in routes.rb from

get 'static_pages/about'

to

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

or alternatively

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

You can read more about Routes here




回答2:


If it works fine locally, I assume you've set up the controllers, views etc properly.

Have you made sure to commit all those necessary changes then push?

e.g.

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



回答3:


Are you accessing the about page using the following URL ? http://YourHerokuAppName.herokuapp.com/static_pages/about

[ Replace "YourHerokuAppName" with your Heroku App Name]



来源:https://stackoverflow.com/questions/31912480/rails-tutorial-sample-app-fails-in-heroku-with-log-actioncontrollerroutingerr

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!