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 %>