Perl - Mojolicious - 在模板中打印 undef 键
Perl - Mojolicious - Print undef key in template
为了提供一些上下文,我的控制器从查询中选择一个数组引用。然后结果像这样打印在模板中。
home.html.ep
<td> <%= @$query_result[0]->{data} %> </td>
<td> <%= @$query_result[1]->{data} %> </td>
....
<td> <%= @$query_result[27]->{data} %> </td>
由于某些结果不存在,Mojolicious 抛出错误(不能使用 undef 哈希值...)
我想做什么:
当 Mojolicious 到达 undef 散列 key/value 以打印 'No Data'.
我试过这样:
<td> <%= @$query_result[27]->{data} || 'no data' %> </td>
or
<td> % (exists(@$query_result[27]->{data})) ? <%= @$query_result[27]->{data} %> : 'no data' </td>
or
<td>
% if (exists($query_result[27]->{data})) {
<%= $query_result[27]->{data} %>
% } else {
'No data'
% }
我不能只删除 <%= $query_result[27]->{data} %> 因为它 return 来自运行在不同参数上且只有一些参数的查询不要 return 第 27 个数组。
有什么方法可以实现我的目标吗?谢谢!
您似乎正在尝试显示从 0
到 27
或更少的所有索引。您可能想为此使用一个循环。
% foreach my $i ( 0 .. scalar @$query_result ) {
<td> <%= @$query_result[$i]->{data} %> </td>
% }
现在您不必再关心列数了。对标题做同样的事情,你就成功了。
或者,您需要先检查 $query_result->[27]
中是否有内容,然后才能进行 exists
检查,因为 undef
(即 无值) 不能像散列引用一样使用。
<td><%= $query_result->[27] ? @$query_result[27]->{data} : 'no data' </td>
为了提供一些上下文,我的控制器从查询中选择一个数组引用。然后结果像这样打印在模板中。
home.html.ep
<td> <%= @$query_result[0]->{data} %> </td>
<td> <%= @$query_result[1]->{data} %> </td>
....
<td> <%= @$query_result[27]->{data} %> </td>
由于某些结果不存在,Mojolicious 抛出错误(不能使用 undef 哈希值...)
我想做什么:
当 Mojolicious 到达 undef 散列 key/value 以打印 'No Data'.
我试过这样:
<td> <%= @$query_result[27]->{data} || 'no data' %> </td>
or
<td> % (exists(@$query_result[27]->{data})) ? <%= @$query_result[27]->{data} %> : 'no data' </td>
or
<td>
% if (exists($query_result[27]->{data})) {
<%= $query_result[27]->{data} %>
% } else {
'No data'
% }
我不能只删除 <%= $query_result[27]->{data} %> 因为它 return 来自运行在不同参数上且只有一些参数的查询不要 return 第 27 个数组。
有什么方法可以实现我的目标吗?谢谢!
您似乎正在尝试显示从 0
到 27
或更少的所有索引。您可能想为此使用一个循环。
% foreach my $i ( 0 .. scalar @$query_result ) {
<td> <%= @$query_result[$i]->{data} %> </td>
% }
现在您不必再关心列数了。对标题做同样的事情,你就成功了。
或者,您需要先检查 $query_result->[27]
中是否有内容,然后才能进行 exists
检查,因为 undef
(即 无值) 不能像散列引用一样使用。
<td><%= $query_result->[27] ? @$query_result[27]->{data} : 'no data' </td>