为了提供一些上下文,我的控制器从查询中选择一个数组引用。然后将结果打印在这样的模板中。
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哈希键/值以显示“无数据”时。
我已经尝试过:
<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}%>,因为它是从在不同参数上运行的查询返回的,并且只有某些参数不会返回第27个数组。
有没有办法实现我正在尝试的目标?谢谢!
答案 0 :(得分:3)
您似乎正在尝试显示从Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps
到0
或更小的所有索引。您可能想要为此使用循环。
27
现在,您不必再在乎列数了。对标题执行相同操作,您会很高兴。
或者,您需要先检查% foreach my $i ( 0 .. scalar @$query_result ) {
<td> <%= @$query_result[$i]->{data} %> </td>
% }
中是否有东西,然后才能进行$query_result->[27]
检查,因为exists
(即无值)不能像哈希引用一样使用。
undef