2011-01-10 5 views
8

저는 현재 작은 촉매 응용 프로그램 중 하나를 Mojolicious (단지 재미로보기)로 이식하려고합니다.Mojolicious url_for : 절대 경로

우리가 페이지에 있다고 말하면 : http://whatever.com/generate. 해당 페이지에 는

하는 (TT 템플릿) 촉매를 사용하는 경우 "생성"예를 들어에 대한 링크가 당신은 http://whatever.com/generate/generated 으로하지만 경우가 링크를 생성합니다

uri_for 'generated' 

으로 링크를 정의

uri_for '/generated' 

로 정의하면이 http://whatever.com/generated

I에 대한 링크를 생성합니다 Mojolicious 'url_for와 동일하게하려고했지만, 다르게 작동하는 것 같습니다. 어떻게 수행 내가

url_for 'generated' 

또는

url_for '/generated' 

모두 호출

가 '/ 생성/생성'

그래서 내 질문은에 대한 링크를 생성 전화 어떠했는지 differnece가되지 않습니다 url_for가 절대 경로에 대한 링크를 생성하도록하십시오. 는

감사 할머니,

답변

10

url_for 앱 루트 상대적 URL을 생성 LDX '를 생성 /'으로 즉. 그것은 휴대 성을 위해 완료되었습니다 : 귀하는 귀하의 응용 프로그램을 임의의 URL에 배치 할 수 있으며 귀하의 링크가 손상되지 않습니다.

절대 경로에 대한 링크가 필요한 경우 왜 url_for보다 필요합니까? 그냥 문자열 '/generated'을 사용할 수 있습니다. 다른 한편에서

, 당신이 정말로

+0

참으로. 나는 아직도 촉매 사고 방식으로 항상 uri_for를 사용하고 있다고 생각한다. 하지만 네 말이 맞아, 나는 url_for가 전혀 필요 없다 :-) – ldx

10

쉽게 url_for에서 절대 URL을 얻을 수 있습니다 PARAMS 반환있는 현재의 URL없이 호출 할 때 모조 :: URL 객체는

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

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/