Aliasing resources in Ruby on Rails
Earlier today, a friend working on a project asked me how we approached routes on our website. If you take a quick peak at our website, you’ll see that we have URLs like so:
- http://planetargon.com/
- http://planetargon.com/who-we-are
- http://planetargon.com/who-we-are/robby-russell
I couldn’t remember where I came across this before and wasn’t quickly finding it in the Ruby on Rails API, so decided that I’d do a quick write up on it.
When we launched our new site a few months ago, we were working off an existing code base. We have a model named, TeamMember
and a corresponding controller. When we decided to come up with new conventions for our URL structure, we opted to ditch the normal Rails conventions and go our own route. What we weren’t sure about was how to alias resources in our routes nicely. After some digging around, we came across the :as
option.
So, our route was:
map.resources :team_members
Which provided us with:
- /team_members
- /team_members/robby-russell
We simply added :as => 'who-we-are'
to our route:
map.resources :team_members, :as => 'who-we-are'
...and we got exactly what we were looking for in our URLs.
* /who-we-are
* /who-we-are/gary-blessington
If you look at our site, you’ll notice that we did this in a few areas of our application so that we could define our own URL structure that was more friendly for visitors and search engines.
Anyhow, just a quick tip for those who want to change up their URLs with Ruby on Rails.
p.s., if you know where I can find this documented, let me know so that I can provide a URL in this post for others. :-)