2011-01-10 24 views
8

私は現在、小さな触媒をMojolicious に移植しようとしています。Mojolicious url_for:絶対パス

私たちはページ上にあると言う:http://whatever.com/generate。 は、そのページで

(TTテンプレート付き)触媒を使用して、「生成」は、例えばへのリンクがあり、あなたはそれがhttp://whatever.com/generate/generated へのリンクを生成しかし、あなたならばなり

uri_for 'generated' 

としてリンクを定義します私はそれがhttp://whatever.com/generated

へのリンクを生成します

uri_for '/generated' 

としてそれを定義しますMojolicious 'url_forと同じことをしようとしましたが、動作が異なるようです。私は両方の呼び出しは「/生成/生成」へのリンクを生成

url_for 'generated' 

または

url_for '/generated' 

を呼び出す天気を それは

をdifferneceがありませんので、私の質問は:私はどのようにurl_forを絶対経路へのリンクを生成させる。 即ちLDX

答えて

10

url_forアプリルートに対する相対URLを生成

おかげで、 Grとを、 '/生成' に。これは移植性のために行われたもので、あなたのアプリケーションを任意のURLに置くことができ、リンクが壊れることはありません。

絶対パスへのリンクが必要な場合は、なぜurl_forよりも必要ですか?文字列を使用することができます'/generated'

一方から、あなたが本当にモジョ:: URLオブジェクトが必要な場合は、

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

url_forでそれを得ることができます

+0

実際にはto_absメソッドを使用できます。いつもuri_forを使って触媒の考え方をしていると思います。しかし、あなたは正しいです、私はurl_forを全く必要としません:-) – ldx

10

のparams戻り、現在のURLなしで呼ばれたときは、簡単な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/