I have a blog with posts in multiple categories. I’d like to give each category an individual landing page that lists all of the bog posts in that category.
What is the appropriate way to generate the routes and controller actions for each of these landing pages? Would it violate the spirit of REST to create multiple index-esque actions (one action per category) in my posts controller? If so, how else should I do it?
For example, my blog might have two categories, “Music” and “Movies”.
GET /posts/ # would list all posts.
GET /music/ # would list all posts in the "Music" category.
GET /movies/ # would list all posts in the "Movies" category.
Apologies if this question has an obvious answer, or if I’m asking the wrong question entirely. I’m new to both Rails and REST and I’m trying to understand the best way to structure applications.
I’m not sure it’s totally in REST spirit (i do not fully understand it yet), so i’ll leave that part of the question to someone else. As the
collectionmethod exists to extend RESTful routes, i assume that it is permitted as long as you don’t abuse of it.I don’t think, though, that having routes with no “/posts/” prefix is a good thing, because it would induce that the “/music/” path for instance relates to a completely different resource.
you can do something like this :
(in routes.rb)
… and then add index-like actions to your controller, e.g.:
if you have a limited and constant set of categories, this can be DRYed up this way: