我有一个值的哈希值,我试图循环以在我的视图中显示这些值。
哈希设置为:
{: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]
.
基本上,我有两个模型:职位和经验。经验是一个孩子的定位。我想获得给定职位的经验,但只能获得某些经验,例如在特定时间范围内发生的经验。很可能有更好的方法来解决这个问题,我只是不知道,所以我愿意接受建议。
谢谢。