Mojolicious5.xにバージョンアップしたせいです
これからMojoliciousを始める人にはあまり関係のない話かもしれないですが、Mojolicious4.xでテンプレートをレンダーした結果を出力せずに変数に格納したい時、
my $rendered = $self->render('sample-template', partial=>1);
なんて書いていたのですが、これが、Mojolicious5.0から通りません。
通らないというか、エラーにならずに単に1
が返って来てしまいます。
このため、partialを常用していたMojolicious4.xの案件を何も考えずに5.xにバージョンアップしてしまった場合、なぜか「1」というだけの内容のメールが届いたり、画面の一部に「1」という表示が出てる、という問題に遭遇することがあります。(経験済み)
どうしたら!
もちろん代替策はあります。
ひとつはMojolicious4.xに戻すことですが、そんな無粋なことをしたくない場合は、render_to_string()
に差し替えましょう。
my $rendered = $self->render_to_string('sample-template');
まぁ確かにpartial=>1
するよりは人道的になったような気もしますね。
おまけ
尚、上記いずれの場合でも返り値はMojo::ByteStream
となっており、そのまま文字列として処理してもいいですが、->
でチェーンしてHTMLエスケープやら色々できます。
my $rendered = $self->render_to_string('smple-template')->xml_escape; # html_escapeというのは無い。
確認したバージョン
- Mojolicious 4.83
- Mojolicious 5.40