使用ruby中的索引迭代属性

时间:2015-10-28 08:41:59

标签: ruby-on-rails

如何在ruby中为属性迭代添加索引?

<% @child.toys.attributes.each do |attr_name, attr_value| %>

我尝试过each_with索引:

<% @child.toys.attributes.each_with_index do |attr_name, attr_value| %>

但索引会在哪里进行?

2 个答案:

答案 0 :(得分:3)

你可以这样做

<% @child.toys.attributes.each_with_index do |(attr_name, attr_value), idx| %>

有关详细信息possible-to-access-the-index-in-a-hash-each-loop

答案 1 :(得分:3)

.each_with_index附加index变量:

%w(cat dog wombat).each_with_index {|item, index|
  hash[item] = index
}
hash   #=> {"cat"=>0, "dog"=>1, "wombat"=>2}

在你的例子中:

<% @child.toys.attributes.each_with_index do |key,value,index| %>
    <%= key %>
    <%= value %>
    <%= index %>
<% end %>

玩具需要是一个成员对象(属性不会对集合起作用)。

-

我还测试了只是声明&#34;键&#34;,如下:

<% @child.toys.attributes.each_with_index do |attr,index| %>
   <%= attr[0] %>
   <%= attr[1] %>
   <%= index %>
<% end %>
在此实例中,

attr作为数组返回,其中键/值分别用作数组的01元素。 / p>