メメメモモ

プログラミング、筋トレ、ゲーム、etc

ルーティング設定に名前をつける

以下のようにルートに名前をつけることが出来ます。

# Mojolicious::Liteの場合
get '/hoge/detail/:id' => sub { ... } => 'hoge/detail';

# Mojoliciousの場合
$r->get('/hoge/detail/:id')->to('hoge#detail')->name('hoge/detail');

このようにしておくと、
url_forやredirect_toを以下のように書くことができます。

$c->url_for('hoge/detail', id => 1);          # -> /hoge/detail/1
$c->redirect_to('hoge/detail', id => 2);    # -> /hoge/detail/2

とても便利ですね。


また、stashにidの値がすでに入っている場合、自動的に「:id」に値が挿入されます。

warn $c->stash->{id};       # -> 1
$c->url_for('hoge/detail'); # -> /hoge/detail/1

ページャなどで、idを引き継ぐ必要がある場合に便利ですね。