我试图将Mason2与Dancer一起使用,并且将字符串传递给模板等琐碎的案例工作正常:
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设置为
<%args>
$.cats
</%args>
我不能像这样遍历这个数组:
<ul>
% foreach my $cat ($.cats){
<li><% $cat %></li>
% }
</ul>
$ cat对象与$ .cats对象相同,是一个数组。 我不确定我做错了什么。
感谢。
答案 0 :(得分:0)
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)
之类的内容。要从哈希输出项目,您必须通过密钥访问它们,例如<% $cat->{id} %>
。