我有一个值的哈希,我试图循环以在我的视图中显示值。
哈希设置为:
{:position=>#<Position id: 2, user_id: 1, title: "Something", city: "Denver", state: "CO",
created_at: "2012-07-06 02:55:42", updated_at: "2012-07-06 02:55:42">, :experience=>[#
<Experience id: 4, user_id: 1, position_id: 2, description: "Did some stuff", created_at:
"2012-07-02 06:24:33", updated_at: "2012-07-02 06:24:33">, #<Experience id: 6, user_id: 1,
position_id: 2, description: "Did other stuff", created_at: "2012-07-02 06:24:33",
updated_at: "2012-07-02 06:24:33">]}
它是通过获取ActiveRecord结果并将它们插入到哈希中创建的(如果您想要更多详细信息,我很乐意添加它们)。
在我看来,我试图遍历哈希:
<% for i in 0..@positions.length %>
<%= @positions[i][:position][:title] %>
<%= @positions[i][:position][:city] %>
<% end %>
当我在浏览器中打开它时,出现错误undefined method '[]' for nil:NilClass
。如果我只使用@positions[i]
,它将转储原始哈希(第一个,然后第二个,依此类推)。我添加[:position]
时,它不起作用。我可以使用@positions[0][:position][:title]
访问控制台中的值。当我尝试在控制台中编写循环时,我得到了同样的错误。
我知道i
正在计算,因为我可以让它在浏览器中显示该值并且它正常工作。
我尝试过使用@positions.each do |job|
,但遇到了同样的错误。我尝试在其他地方添加其他索引:@positions[i][:position][0]
。
基本上,我有两种模式:职位和经验。经验是孩子的位置。我希望获得给定位置的经验,但只能获得某些经验,例如在特定时间范围内出现的经历。最有可能采用更好的方法来解决这个问题,我不知道这一点,所以我愿意接受建议。
感谢。
答案 0 :(得分:4)
似乎你有一个Postion类的对象分配给键:position 。因此,您可以通过访问者方法访问标题和城市,而不是[]
。
<% @positions.each do |job| %>
<%= job[:position].title %>
<%= job[:position].city %>
<% end %>