2013-01-16 58 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>