我有这样的哈希:
@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>
答案 0 :(得分:2)
你所拥有的是Hash
,而不是User
对象。因此,您必须使用索引运算符([]
)访问用户名:
<ul>
<% @json.each do |user| %>
<li><%= user["username"] %></li>
<% end %>
</ul>
答案 1 :(得分:2)
json2 = [{"id"=> 1, "username" => "Example"}, {"id"=> 2, "username" => "Example 2"}]
json2.each do |user|
puts user['username']
end
答案 2 :(得分:2)
如果您需要在控制台中输出,则需要执行以下操作:
@json = [{"id"=> 1, "username" => "Example"}, {"id"=> 2, "username" => "Example 2"}]
@json.collect{|json| puts json['username'] }
答案 3 :(得分: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>