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 -- Posted via http://www.ruby-forum.com/.
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. On May 13, 2009, at 6:09 PM, Dan Sadaka wrote:> > 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 > -- > Posted via http://www.ruby-forum.com/. > > >
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? :) 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 Jones On May 13, 8:09 pm, Dan Sadaka <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> 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 > -- > Posted viahttp://www.ruby-forum.com/.
Matt Jones 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? :) > > 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 Jones > > On May 13, 8:09�pm, Dan Sadaka <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org>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 -- Posted via http://www.ruby-forum.com/.
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 Jones On May 15, 3:53 pm, Dan Sadaka <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Matt Jones 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? :) > > > 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 Jones > > > On May 13, 8:09 pm, Dan Sadaka <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> > > 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 > -- > Posted viahttp://www.ruby-forum.com/.