2013-01-16 59 views
2

我有一个哈希这样的:如何遍历哈希列表?

@json = [{"id"=> 1, "username" => "Example"}, {"id"=> 2, "username" => "Example 2"}] 

我想要做这样的事情:

<ul> 
    <% @json.each do |user| %> 
    <li><%= user.username %></li> 
    <% end %> 
</ul> 

,它将输出与两个用户名列表。

只是尝试这样在IRB:

json2 = [{"id"=> 1, "username" => "Example"}, {"id"=> 2, "username" => "Example 2"}] 
irb(main):076:0> json2.each do |user| 
irb(main):077:1* user["id"] 
irb(main):078:1> end 
=> [{"id"=>1, "username"=>"Example"}, {"id"=>2, "username"=>"Example 2"}] 
irb(main):079:0> 

回答

2

你有什么是Hash,而不是一个User对象。

<ul> 

<% @json.each do |user| %> 
    <li><%= user["username"] %></li> 
<% end %> 

</ul> 
+0

我已经试过这看我的问题,我没有得到的ID .. –

+0

@Railsbeginner,你看到的是返回值'each'方法,这是'json2'数组。尝试调用'map'。 –

+0

地图正在工作.. –

2
json2 = [{"id"=> 1, "username" => "Example"}, {"id"=> 2, "username" => "Example 2"}] 
json2.each do |user| 
    puts user['username'] 
end 
2

如果您需要在控制台输出,那么你需要做如下:因此,您必须使用索引运算符([])访问的用户名

@json = [{"id"=> 1, "username" => "Example"}, {"id"=> 2, "username" => "Example 2"}] 
@json.collect{|json| puts json['username'] } 
0

如果你想迭代散列,你可以使用任何这个。

@json = [{"id"=> 1, "username" => "user_name"}, {"id"=> 2, "username" => "user_name"}, {"id"=> 3, "username" => "user_name"}] 

@json.each{|json| puts json['username'] } 

@json.collect{|json| json['username'] } 

@json.map{|json| json['username'] } 

如果您在视图中要那么你可以使用

<ul> 
    <% @json.each do |user| %> 
    <li><%= user["username"] %></li> 
    <% end %> 
</ul>