I'm having a problem in Volt where I need a bunch of pages with a "template" controller and view. Let me explain this in a little more detail:
Say, for example, I have a site about books. I have a page at http://localhost:3000/books
. It serves as an index to other pages, e.g. http://localhost:3000/books/fantasy/lord_of_the_rings
. I want all of the pages featuring books to have a single controller and view, so that I don't have to manually add in a controller and view for each book that I want to add. Rather, I just want to add in content to each page featuring a book to keep my workflow as DRY as possible.
So, the file structure under app/main/views
would look like this:
views
├── books
│ ├── index.html
│ └── template.html
└── main
├── index.html
└── main.html
And the file structure under app/main/controllers
would look like this:
controllers
├── books_controller.rb
└── main_controller.rb
The problem is that I don't know how to set this up in app/main/config/routes.rb
since I guess that's where pages' URLs are defined and their controllers, actions, etc. How do I go about achieving something like this in Volt?
You could for example use the following routes:
This will route both requests to the books controller. And it will make the
genre
andtitle
available via the params collection in the template controller action(s) and the view. You can then use this information to load the correct book from the store (or wherever).You can read more about routes here: http://docs.voltframework.com/en/docs/routes_file.html