我正在为AWS开发一个简单的客户前端。我想要一个用于启动/停止EC2的所有用户机器的列表。虽然逻辑工作,我只能在我的视图中显示第一台机器。我想这与AWS API可分页响应格式有关,我并不完全理解。
我正在尝试遍历repsonse并使用索引生成实例变量以在我的视图中的表中显示。我只是得到第一台机器。手动编辑值显示正确的机器,因此它在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%>
答案 0 :(得分:0)
据我所知,控制器中的方法将返回循环中的最后一个对象,所以如果你有5个对象,它将循环遍历每个对象并将返回最后一个,导致控制器方法结束于你的情况下。
您需要将数组传递给视图并在那里进行循环。
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%>