Mojolicious url_for: абсолютный путь - PullRequest
9 голосов
/ 10 января 2011

В настоящее время я пытаюсь портировать одно из моих небольших приложений-катализаторов на Mojolicious (просто для удовольствия).

Скажем, что мы на странице: http://whatever.com/generate. На этой страницеесть ссылка, например, на «сгенерированный»

При использовании катализатора (с шаблонами TT), и вы определяете ссылку как

uri_for 'generated'

, она сгенерирует ссылку на http://whatever.com/generate/generated Но если вы определите его как

uri_for '/generated'

, он сгенерирует ссылку на http://whatever.com/generated

Я попытался сделать то же самое с Mojolicious 'url_for, но, похоже, он работает по-другому.Это не делает различий между тем, как я звоню

url_for 'generated'

или

url_for '/generated'

, и оба звонка генерируют ссылку на '/ generate / generate'

Так что мой вопросэто: как мне сделать url_for генерировать ссылку на абсолютный маршрут.т.е. "/ генерируется"

спасибо, Gr, ldx

Ответы [ 2 ]

11 голосов
/ 10 января 2011

url_for генерирует URL-адреса относительно корня приложения. Это было сделано для переносимости: вы можете разместить свое приложение по любому адресу, и ваши ссылки не будут сломаны.

Если вам нужна ссылка на абсолютный путь, зачем вам url_for чем? Вы можете использовать только строку '/generated'.

С другой стороны, если вам действительно нужен объект Mojo :: URL, вы можете получить его с помощью

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

url_for при вызове без параметров возвращает текущий URL

10 голосов
/ 01 мая 2012

Вы можете легко получить абсолютный URL из url_for. Он возвращает объект Mojo :: URL, поэтому вы можете просто использовать метод to_abs:

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