我正在尝试将mason2与舞者和琐碎的情况(例如将字符串传递到模板传递起来)正常工作:
get '/foo', sub {
template 'foo' => {
title => 'bar'
};
};
<%args>
$.title
</%args>
<h1><% $.title %></h1>
所以,这在起作用。当我想将哈希或数组之类的东西传递给模板时,就开始了麻烦。当我将此数组传递到模板时:
template 'index', { cats=> [{id=>1,title=>'Cat1'},{id=>2,title=>'Cat2'}]};
并在模板中设置为
<%args>
$.cats
</%args>
我不能像这样循环通过此数组:
<ul>
% foreach my $cat ($.cats){
<li><% $cat %></li>
% }
</ul>
$ cat对象与$ .cats对象,一个数组相同。我不确定我做错了什么。
谢谢。
borodin是完全正确的。$.cats
是数组参考;要循环遍历元素,您必须将其解释:
<%args>
$.cats
</%args>
<ul>
% foreach my $cat ( @{$.cats} ) {
<li><% $cat->{title} %></li>
% }
</ul>
输出:
<ul>
<li>Cat1</li>
<li>Cat2</li>
</ul>
请注意,<% $cat %>
在标量上下文中评估$cat
并输出它;由于$cat
是哈希参考,因此将输出类似HASH(0x4b9fad8)
的内容。要从哈希(Hash)输出项目,您必须通过键访问它们,例如<% $cat->{id} %>
。