2011-01-10 158 views
8

我目前正試圖將我的一個小型催化劑應用程序移植到Mojolicious (僅僅爲了它的樂趣)。我們在頁面上:http://whatever.com/generate。 該網頁上有「生成」Mojolicious url_for:絕對路徑

當使用催化劑(與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' 

兩個呼叫生成一個鏈接到/生成/生成「

所以我的問題是:我該怎麼辦使url_for生成一個絕對路線的鏈接。 即以 '/' 產生

感謝, GR, LDX

回答

10

url_for產生相對於應用程序根網址。這是爲了便攜性而完成的:您可以將您的應用放在任何網址上,並且鏈接不會被破壞。

如果你需要一個絕對路徑的鏈接,爲什麼你需要url_for比?您只能使用字符串'/generated'

從另一方面,如果你真的需要魔精:: URL對象,你可以用

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

url_for得到它的時候不叫回報PARAMS當前URL

+0

確實。我想我仍然處於催化劑的心態,總是使用uri_for。但你是對的,我根本不需要url_for :-) – ldx 2011-01-10 14:39:38

10

你可以很容易地從url_for絕對URL 。它返回一個Mojo :: URL對象,所以你可以使用to_abs方法:

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