There may be a better way, but your approach looks very reasonable.

Derek

On Fri, Mar 13, 2009 at 6:32 PM, Charles F. Munat <[email protected]> wrote:

>
> Ha! I knew it would be simple. I should've tried that. But I was also
> interested in finding out if anyone had a better idea for how to handle
> this situation (as it is very common for the kind of sites I build).
>
> Thanks, Derek. You da man.
>
> Chas.
>
> Derek Chen-Becker wrote:
> >  I think it may be helpful to use a guard:
> >
> > case RewriteRequest(path @
> >     ParsePath("bios" :: id :: _, _, _,_), _, _) if id != "index" =>
> >         RewriteResponse(
> >             ParsePath("bio" :: "index" :: Nil,
> >                       "",
> >                       true,
> >                       false),
> >             Map("id" -> id :: path.wholePath.drop(2)
> >                 .zipWithIndex.map(p =>
> >                     ("param"+(p._2 + 1)) -> p._1) :_*
> >             )
> >         )
> >
> > The RewriteResponse class (not companion object, as you're using here)
> > also has a flag in the constructor to tell Lift to stop rewriting.
> >
> > Derek
> >
> > On Fri, Mar 13, 2009 at 5:34 PM, Charles F. Munat <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> >
> >     I have a lot of sites that involve dynamically-generate pages. OK,
> all
> >     of them do. So let's say that I have a "bios" page where I link to a
> >     bunch of individual bios (for Sam, Sally, and Sue). If Sam is user #1
> >     and Sally and Sue are #2 and #3 respectively, I want to get to their
> >     bios like this:
> >
> >     /bios                   -> Bio index page
> >     /bios/1                 -> Sam's bio
> >     /bios/2                 -> Sally's bio
> >     /bios/3                 -> Sue's bio
> >
> >     Yes, I know about exposing database IDs. I don't care. But sometimes
> I
> >     do something like this:
> >
> >     /bios
> >     /bios/sam_spade
> >     /bios/sally_struthers
> >     /bios/sue_me
> >
> >     Where I generate the "code" from the users name using a regex. I
> >     actually like this better because it's more human readable, but
> >     generating the codes is a bitch (and names aren't always unique). So
> I
> >     get lazy and go back to numbers.
> >
> >     Currently, I do this:
> >
> >     case RewriteRequest(path @
> >         ParsePath("bios" :: id :: _, _, _,_), _, _) =>
> >             RewriteResponse(
> >                 ParsePath("bio" :: "index" :: Nil,
> >                           "",
> >                           true,
> >                           false),
> >                 Map("id" -> id :: path.wholePath.drop(2)
> >                     .zipWithIndex.map(p =>
> >                         ("param"+(p._2 + 1)) -> p._1) :_*
> >                 )
> >             )
> >
> >     Then I put the template for the bio page in /bio/index.html.
> >
> >     The problem here is that I can't use /bio/index.html as the "index"
> page
> >     for the bios (choosing a template) because I get an infinite loop,
> which
> >     is why it redirects to /bio not /bios. I need it to *not* redirect
> when
> >     the "id" part is "index." There is probably a drop dead simple way to
> do
> >     this, but my brain is fried after five all-nighters this week.
> >
> >     Also, is this really the best way to implement the behavior I
> describe
> >     at the beginning of this email? And does everyone understand why I'm
> not
> >     using /bios/?F5177147114085ON=_ ?
> >
> >     Chas.
> >
> >
> >
> >
> > >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to