Newbie route issue

I am writing my first RoR app. I have used the following command to create several pages: $ rails generate controller home index (I created home, news, gallery, contact,...) I created the menus in app/views/layouts/application.html.erb : <div id="menu">   <ul>     <li><a href="/">Home</a></li>     <li><a href="/news">News</a></li>     <li><a href="/gallery">Gallery</a></li>     <li><a href="/membership">Membership</a></li>     <li><a href="/sponsors">Sponsors</a></li>       <li><a href="/faq">FAQ's</a></li>       <li><a href="/shoot">Shoot Info</a></li>       <li><a href="/contact">Contact</a></li>   </ul>

If I click on one of the menu button "Gallery", I get: Routing Error

No route matches [GET] "/gallery"

The config/routes.rb has:

get "gallery/index"

What am I missing?


Check out the rails routing guide: Rails Routing from the Outside In — Ruby on Rails Guides

Look also into the link_to approaches, as you can get very clean, versatile code this way


To get my menus to work, I had to change the routes.rb

From:   get "contact/index"


  resources :contact

I must be using the generate command incorrectly?

I used: $ rails generate controller contact index

Should I have used some other generate command?

As a tip (I’m kind of new in rails), I only generate the models and after that I manually create the controllers/views and also modify the routes.rb (that file has good examples about routing )

I started with rails g scaffold, but sometimes it’s not what I need, that’s why I started to create my models first.

Is there someone using another way?

Javier Q.

I think your original route would have worked if you had used the url contact/index, which is after all what you asked for in the generate command.


I usually go ahead and use scaffolding, but then delete what I don't intend to use. It's a lot easier than making sure I remember to put all the pieces in. :slight_smile: