Map.connect with pattern match


#1

I have a site that includes a Flash navigator banner.
Rather than have the designer go in and change the links ($$), I would
like to redirect his links to mine.

His links are in the form “pagename.html”.

I need each of these links to instead be directed to actions within my
home controller.

I have done the following:

map.connect “pagename.html”,
:controller => ‘home’,
:action => ‘pagename’

which works fine as long as I was not displaying a page from a
controller at the time. i.e. I was displaying a page from “public”.
However, as we know, if I was displaying a page from the “step1”
controller, this mapping would not work since the url is now
“/step1/pagename.html”

Of course, I could make entries for every controller to handle this but
what I really want to do is something like

map.connect “^.*pagename.html”

so Rails ignores everything up to the pagename.html part.

I tried using

map.connect “*pagename.html”

but this doesn’t work.

Any ideas?

THANK YOU IN ADVANCE,
Dan


#2

I don’t know how intensive your link-redirector is, but if you’re on a
recent version of rails that uses rack, I’d look into using rails
metal to pattern match on the request and do your thing.

By pass rails entirely and gain some speed as well.

Here’s one guide: http://railscasts.com/episodes/150-rails-metal

Otherwise you need to install a catchall route, but that can get messy
if you use default routes as well.


#3

Not to be critical, but you must have the world’s weakest contract
with this designer… at the very least, they should be willing to
change the links to absolute paths ("/pagename.html") so that the
banner’s not completely broken.

And a Flash nav banner? What is this, 1999? :slight_smile:

On a more technical note, I’ve also run into the problem with legacy
links like this. Another option would be to use mod_rewrite (or
equivalent if you’re not on Apache) to rewrite the links into the
correct format.

–Matt J.

On May 13, 8:09 pm, Dan S. removed_email_address@domain.invalid


#4

Matt J. wrote:

Not to be critical, but you must have the world’s weakest contract
with this designer… at the very least, they should be willing to
change the links to absolute paths ("/pagename.html") so that the
banner’s not completely broken.

And a Flash nav banner? What is this, 1999? :slight_smile:

On a more technical note, I’ve also run into the problem with legacy
links like this. Another option would be to use mod_rewrite (or
equivalent if you’re not on Apache) to rewrite the links into the
correct format.

–Matt J.

On May 13, 8:09�pm, Dan S. removed_email_address@domain.invalid

You’re saying as the pages are prefixed with a forward slash, rails
won’t try to preprend the controller name? That should work.

Actually, flash nav banners are all the rage again. Hard to find a
decent site without one–and for good reason. What else comes close in
terms of eye-catching quality?

Thanks,
Dan


#5

The browser is the one actually adding the controller name - it sees a
bare, slash-less reference as relative to the current URL’s directory
(the controller). The initial slash makes it an absolute path,
avoiding that problem.

–Matt J.

On May 15, 3:53 pm, Dan S. removed_email_address@domain.invalid