2011-01-10 16 views
8

Actualmente estoy tratando de portar una de mis aplicaciones de catalizador más pequeñas a Mojolicious (solo por el gusto de hacerlo).Mojolicious url_for: absolute path

decir que estamos en una página: http://whatever.com/generate. En esa página hay un enlace a, por ejemplo, "genera"

Cuando se utiliza catalizador (con plantillas TT) y se define el enlace como

uri_for 'generated' 

se generará un enlace a http://whatever.com/generate/generated Pero si definirlo como

uri_for '/generated' 

se generará un enlace a http://whatever.com/generated

I trató de hacer lo mismo con url_for Mojolicious', pero parece que funciona de manera diferente. No tiene un differnece wether llamo

url_for 'generated' 

o

url_for '/generated' 

ambas llamadas generar un enlace a '/ genero/generaron'

Así que mi pregunta es: ¿Cómo make url_for genera un enlace a una ruta absoluta. es decir, a '/ generado'

gracias, Gr, ldx

Respuesta

10

url_for genera URL relativos a raíz aplicación. Eso se hizo para la portabilidad: puede colocar su aplicación en cualquier url y sus enlaces no se romperán.

Si necesita un enlace a la ruta absoluta, ¿por qué necesita url_for than? Se puede usar sólo una cadena '/generated'.

De otro lado, si usted realmente necesita Mojo :: objeto URL que se puede conseguir con

<%= url_for->path('/generated') %> 

url_for Cuando se invoca sin retornos params URL actual

+0

Indeed. Supongo que todavía estoy en una mentalidad de catalizador, siempre usando uri_for. Pero tienes razón, no necesito url_for para nada :-) – ldx

10

Usted puede conseguir fácilmente una URL absoluta de url_for . Devuelve un objeto Mojo :: URL, por lo que puede usar el método to_abs:

$ perl -Mojo -E 'a("/" => sub { $s=shift;$s->render(text=>$s->url_for("/")->to_abs) })->start' get/
http://localhost:13733/