Forum: Ruby on Rails Custom path overriding - routes.rb

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Grant Neufeld (Guest)
on 2006-04-21 03:18
(Received via mailing list)
I want to be able to have custom URL paths to some of my data.

For example, I might have some entries in my "item" table like:
  id=1, title="Test", path="/test.html", content="some test content..."
  id=2, title="Example", path="/another/example/", content="some
example content..."
  id=3, title="Some more",
path="/however_convoluted/I/want/to/make_it.whatever", content="etc."

With the regular scaffolding and routes.rb setup, I can have paths
like /item/view/1, /item/view/2, etc., for these examples, but I also
want to be able to have the /test.html, /another/example/, etc.,
paths work.

I'd be happy with being able to catch cases where none of the
map.connect specified routes in routes.rb. I'd then want to do a
lookup against my item table to see if I have a matching path, setting
   :controller => "item", :action => "view", :id =>
in those cases where I do, and letting control pass through to the
usual "invalid route" error handler when I don't have an item for the

So, is there someway to specify a special handler for routes.rb where
I could have something like:
   map.connect '*', { |path| my_block_of_functions }
where the block would be responsible for turning a dictionary of
{:controller, :action, :id} values or nil if the path isn't handled?
Or something along those lines?

It would also be handy to be able to put such a function/block at the
to of the routes.rb, so I could potentially override any controller
path, and pass along to the rest of the routes.rb if I don't have an
overriding path.

This topic is locked and can not be replied to.