Ruby/Rails 迭代哈希数组
Ruby/Rails Iterating Array of Hashes
我有一个 table 是从哈希数组填充的。数据如下所示:
[
{'key' => 'some key', 'value' => 'some value'},
{'key' => 'some key2', 'value' => 'some value2'},
{'key' => 'some key3', 'value' => 'some value3'},
{'key' => 'some key4', 'value' => ''},
{'key' => 'some key5', 'value' => ''}
]
但它也可以是这样的:
[
{'key' => 'some key', 'value' => ''},
{'key' => 'some key2', 'value' => ''},
{'key' => 'some key3', 'value' => ''}
]
现在的情况是,所有值为空字符串的数据正在我的视图中呈现行。如果所有值都是空字符串,我不想渲染一行。如果这些值至少有一个非空字符串,我确实想渲染该行。
如果所有值都是空字符串,如何停止呈现一行?我试过遍历数据,这是可行的。此代码:
<% @data.each do |r| %>
<tr>
<% r.each do |h| %>
<% unless h['value'].empty? %>
<td><%= h['value'] %></td>
<% end %>
<% end %>
</tr>
<% end %>
停止渲染所有值为空的行,但它也不会渲染 <td>
行中有一些空值的行,因为它不会渲染那些 <td>
.
生成 <tr>
时不能只跳过几个 <td>
,因为它很可能会破坏 <table>
的渲染。的
因此,在开始生成“行”之前,您必须确保要显示它。
<% @data.each do |r| %>
<% unless r.all? { |h| h["value"].empty? } %>
<tr>
<% r.each do |h| %>
<td><%= h['value'] %></td>
<% end %>
</tr>
<% end %>
<% end %>
我有一个 table 是从哈希数组填充的。数据如下所示:
[
{'key' => 'some key', 'value' => 'some value'},
{'key' => 'some key2', 'value' => 'some value2'},
{'key' => 'some key3', 'value' => 'some value3'},
{'key' => 'some key4', 'value' => ''},
{'key' => 'some key5', 'value' => ''}
]
但它也可以是这样的:
[
{'key' => 'some key', 'value' => ''},
{'key' => 'some key2', 'value' => ''},
{'key' => 'some key3', 'value' => ''}
]
现在的情况是,所有值为空字符串的数据正在我的视图中呈现行。如果所有值都是空字符串,我不想渲染一行。如果这些值至少有一个非空字符串,我确实想渲染该行。
如果所有值都是空字符串,如何停止呈现一行?我试过遍历数据,这是可行的。此代码:
<% @data.each do |r| %>
<tr>
<% r.each do |h| %>
<% unless h['value'].empty? %>
<td><%= h['value'] %></td>
<% end %>
<% end %>
</tr>
<% end %>
停止渲染所有值为空的行,但它也不会渲染 <td>
行中有一些空值的行,因为它不会渲染那些 <td>
.
生成 <tr>
时不能只跳过几个 <td>
,因为它很可能会破坏 <table>
的渲染。的
因此,在开始生成“行”之前,您必须确保要显示它。
<% @data.each do |r| %>
<% unless r.all? { |h| h["value"].empty? } %>
<tr>
<% r.each do |h| %>
<td><%= h['value'] %></td>
<% end %>
</tr>
<% end %>
<% end %>