![](/img/trans.png)
[英]How do I iterate over an array, use it in my view and remove each value so it calls an API Get request when array is empty?
[英]How do I iterate over an array and output each iteration?
假设我的数组如下所示:
People => [
{
Person => Jack,
Age => 25
},
{
Person => Frank,
Age => 45
},
{
Person => Molly,
Age => 30
}
]
我认为迭代代码将在控制器中,因为它正在处理数据。 我的控制器代码如下所示:
class People < ApplicationController
def list
people.each do |hash|
@person = hash[person]
@age = hash[age]
end
end
end
我的查看代码如下:
<h1>People</h1>
<p>
Person: <%= @person %> <br/>
Age: <%= @age %> <br/>
<br/>
</p>
当我加载页面时,没有看到三个输出块,每个人一个,而是只看到了Molly
一个块:最后一次迭代。
我在想我需要将迭代代码而不是控制器放在视图中。 这个对吗?
是的,当您设置实例变量ie时会发生什么。 @person
在控制器中,它会自动抛出到视图中。 在这种情况下,您的代码将用最后一个可用的人覆盖@person
。
如您所述,将循环放入视图中,如下所示:
<h1>People</h1>
<% @people.each do |person| %>
<p>
Age: <%= person.age %> <br/>
<br/>
</p>
<% end %>
(这是假设您设置了一个名为@people
的实例变量,例如@people = Person.all
)
每次循环遍历时,都将重置@ person,@ age实例变量。 这就是为什么只剩下最后一个人。 假设人员信息存储在数据库中,则应使用以下命令加载所有人员:
#controller
@people=Person.all
#then in the view
<h1>People</h1>
<%@people.each do |person|%>
<p>
Person: <%=person.person %> <br/>
Age: <%= person.age %> <br/>
<br/>
</p>
<%end%>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.