循环遍历 AWS 实例列表仅显示第一项
Loop through list of AWS-instances shows only first item
我正在为 AWS 开发一个简单的客户前端。我想要 start/stopping EC2 的所有用户计算机的列表。虽然逻辑有效,但我只能在我的视图中显示第一台机器。估计和AWS APIs pageable response format有关,我不是很懂
我正在尝试遍历响应并使用索引生成实例变量以在我的视图中显示在 table 中。我只有,永远得到第一台机器。手动编辑该值会显示正确的机器,因此它位于 repsonse 数组中。我怎样才能完成这个列表?
这是我的控制器:
def ec2
@instanz = User.myinstances(current_user.email)
@instanz.reservations[0].instances.each_with_index do |response, index|
@name = @instanz.reservations[0].instances[index].tags[0].value
@state = @instanz.reservations[0].instances[index].state.name
@ec2id = @instanz.reservations[0].instances[index].instance_id
end
end
和相应的视图:
<h3>Hier können Sie Ihre EC2-Instanzen starten und stoppen.</h3>
<%if @instanz %>
<table width=100%>
<th>Instanz-ID:</th><th>Name:</th><th>Status:</th><th>Aktion:</th>
<tr> <td><b><%= @ec2id %></b> </td>
<td> <%= @name %> </td>
<td> <%= @state %> </td>
<td> <%if @state == 'stopped' %>
<%= button_to 'Starten', :action => 'startec2' %>
<% else %>
<%= button_to 'Stoppen', :action => 'stopec2' %>
</td>
</tr>
</table>
<% end %>
<% else %>
<h4>Es wurden leider keine EC2-Instanzen gefunden.<br>Wenn Sie glauben, dass es sich um einen Fehler handelt, setzen Sie sich bitte mit dem Support (Tel: -3333) in Verbindung. </h4>
<%end%>
据我所知,控制器中的方法将 return 循环中的最后一个对象,因此如果您有 5 个对象,它将遍历每个对象并 return 最后一个对象,因为这就是您的情况下控制器方法结束的地方。
您需要将数组传递给视图并在那里进行循环。
def ec2
@instanz = User.myinstances(current_user.email)
@instances = @instanz.reservations[0].instances
end
视图应该是这样的:
<%if @instanz %>
<table width=100%>
<th>Instanz-ID:</th>
<th>Name:</th>
<th>Status:</th>
<th>Aktion:</th>
<% @instances.each do |i| %>
<tr>
<td><b><%= i.instance_id %></b></td>
<td> <%= i.name %> </td>
<td> <%= i.state.name %> </td>
<td> <%if i.state.name == 'stopped' %>
<%= button_to 'Starten', :action => 'startec2' %>
<% else %>
<%= button_to 'Stoppen', :action => 'stopec2' %>
</td>
</tr>
</table>
<% else %>
<h4>Es wurden leider keine EC2-Instanzen gefunden.<br>Wenn Sie glauben, dass es sich um einen Fehler handelt, setzen Sie sich bitte mit dem Support (Tel: -3333) in Verbindung. </h4>
<%end%>
我正在为 AWS 开发一个简单的客户前端。我想要 start/stopping EC2 的所有用户计算机的列表。虽然逻辑有效,但我只能在我的视图中显示第一台机器。估计和AWS APIs pageable response format有关,我不是很懂
我正在尝试遍历响应并使用索引生成实例变量以在我的视图中显示在 table 中。我只有,永远得到第一台机器。手动编辑该值会显示正确的机器,因此它位于 repsonse 数组中。我怎样才能完成这个列表?
这是我的控制器:
def ec2
@instanz = User.myinstances(current_user.email)
@instanz.reservations[0].instances.each_with_index do |response, index|
@name = @instanz.reservations[0].instances[index].tags[0].value
@state = @instanz.reservations[0].instances[index].state.name
@ec2id = @instanz.reservations[0].instances[index].instance_id
end
end
和相应的视图:
<h3>Hier können Sie Ihre EC2-Instanzen starten und stoppen.</h3>
<%if @instanz %>
<table width=100%>
<th>Instanz-ID:</th><th>Name:</th><th>Status:</th><th>Aktion:</th>
<tr> <td><b><%= @ec2id %></b> </td>
<td> <%= @name %> </td>
<td> <%= @state %> </td>
<td> <%if @state == 'stopped' %>
<%= button_to 'Starten', :action => 'startec2' %>
<% else %>
<%= button_to 'Stoppen', :action => 'stopec2' %>
</td>
</tr>
</table>
<% end %>
<% else %>
<h4>Es wurden leider keine EC2-Instanzen gefunden.<br>Wenn Sie glauben, dass es sich um einen Fehler handelt, setzen Sie sich bitte mit dem Support (Tel: -3333) in Verbindung. </h4>
<%end%>
据我所知,控制器中的方法将 return 循环中的最后一个对象,因此如果您有 5 个对象,它将遍历每个对象并 return 最后一个对象,因为这就是您的情况下控制器方法结束的地方。
您需要将数组传递给视图并在那里进行循环。
def ec2
@instanz = User.myinstances(current_user.email)
@instances = @instanz.reservations[0].instances
end
视图应该是这样的:
<%if @instanz %>
<table width=100%>
<th>Instanz-ID:</th>
<th>Name:</th>
<th>Status:</th>
<th>Aktion:</th>
<% @instances.each do |i| %>
<tr>
<td><b><%= i.instance_id %></b></td>
<td> <%= i.name %> </td>
<td> <%= i.state.name %> </td>
<td> <%if i.state.name == 'stopped' %>
<%= button_to 'Starten', :action => 'startec2' %>
<% else %>
<%= button_to 'Stoppen', :action => 'stopec2' %>
</td>
</tr>
</table>
<% else %>
<h4>Es wurden leider keine EC2-Instanzen gefunden.<br>Wenn Sie glauben, dass es sich um einen Fehler handelt, setzen Sie sich bitte mit dem Support (Tel: -3333) in Verbindung. </h4>
<%end%>