10

私は現在、小さな触媒アプリの 1 つを Mojolicious に移植しようとしています (楽しみのためだけに)。

http://whatever.com/generateというページにいるとしましょう。そのページには、たとえば「生成された」へのリンクがあります

Catalyst (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/generated」へのリンクが生成されます

だから私の質問は: url_for で絶対ルートへのリンクを生成するにはどうすればよいですか。つまり、「/生成」

ありがとう、Gr、ldx

4

2 に答える 2

11

url_forアプリのルートに関連する URL を生成します。これは移植性のために行われました。アプリを任意の URL に配置でき、リンクが壊れることはありません。

絶対パスへのリンクが必要な場合、なぜ url_for が必要なのですか? string のみを使用できます'/generated'

一方、Mojo::URL オブジェクトが本当に必要な場合は、次のようにして取得できます。

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

url_forパラメータなしで呼び出すと、現在の URL が返されます

于 2011-01-10T13:26:33.253 に答える
11

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/
于 2012-05-01T17:17:19.320 に答える