views:

40

answers:

2

In Ruby on Rails, how can I do the equivalent of this in a more elegant routes line? I may have to add many of these...

  map.connect '/about', :controller => "site", :action => "about"
  map.connect '/contact', :controller => "site", :action => "contact"
  map.connect '/preview', :controller => "site", :action => "preview"

Thanks!

+4  A: 

You can do this:

map.connect '/:action', :controller => "site", :action => /about|contact|preview/

The part :action => /about|contact|preview/ makes sure that only the listed words can be used as action in this route,.

Tomas Markauskas
A: 

But do not forget to move the route suggested by @Tomas to the bottom of your routes.rb Otherwise it will catch routes that should not be caught.

Tanel Suurhans
It won't catch everything if you use it with the regular expression condition.
Tomas Markauskas