通过遍历3个不同的数组在erb中构建表

mac*_*ghl 4 ruby-on-rails erb

我的控制器中有以下数组(它们每个都有相同数量的元素)

@account_names => => ["Cleveland", "Denver", "Houston", "LA", "Louisville", "Minneapolis", "Nashville", "Phoenix", "Reno", "San Diego", "San Francisco", "Seattle", "South Florida", "Utah", "Vancouver", "DC"]
@combined_conversions => [0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0]
@combined_spend => [103.65, 86.88, 142.17, 324.4, 86.84, 135.45, 48.11, 149.42, 44.46, 94.36, 285.15, 211.98, 224.61, 77.11, 23.39, 29.82]
Run Code Online (Sandbox Code Playgroud)

我试图像这样在我的视图中创建一个表

<table class="table table-hover">
<tr>
  <th>Name</th>
  <th>Conversions</th>
  <th>Spend</th>
</tr>

<tr>
<% @account_names.each do |name| %>                    
  <td><%= name %><td>
<% end %>

<% @combined_conversions.each do |conversion| %>
  <td><%= conversion %></td>
<% end %>

<% @combined_spend.each do |spend| %>
  <td><%= spend %></td>
<% end %>                    
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

但是我得到的HTML输出是一大行

<tr>
  <td>Cleveland<td>
  <td>Denver<td>
  <td>Houston<td>
  <td>LA<td>
  <td>Louisville<td>
  <td>Minneapolis<td>
  <td>Nashville<td>
  <td>Phoenix<td>
  <td>Reno<td>
  <td>San Diego<td>
  <td>San Francisco<td>
  <td>Seattle<td>
  <td>South Florida<td>
  <td>Utah<td>
  <td>Vancouver<td>
  <td>DC<td>
  <td>0</td>
  <td>0</td>
  <td>2</td>
  <td>0</td>
  <td>0</td>
  <td>0</td>
  etc.
Run Code Online (Sandbox Code Playgroud)

当我真的想要它看起来像

<tr>
  <td>Cleveland<td>
  <td>0<td>
  <td>103.65<td>
</tr>
<tr>
  <td>Denver<td>
  <td>0<td>
  <td>86.88<td>
</tr>
Run Code Online (Sandbox Code Playgroud)

如果仅用一个数组尝试,则可以正常工作,将每一行放置一个元素

<tr>
<% @account_names.each do |name| %>                    
  <td><%= name %><td>
</tr>
<% end %>
Run Code Online (Sandbox Code Playgroud)

Rya*_*igg 5

您可能会这样写:

  <% @account_names.each_with_index do |name, index| %>                    
    <tr>
      <td><%= name %><td>
      <td><%= @combined_conversions[index] %></td>
      <td><%= @combined_spend[index] %></td>
    </tr>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

由于每个数组中的每个键都将其值与对应数组中的值进行一对一映射,因此您可以引用其他数组并在其中找到相同的索引。“克利夫兰”将在第二列中显示0,在第三列中显示“ 103.65”。