我有一个哈希值,我试图通过循环显示我的视图中的值。未定义的方法`[]'nil:NilClass当通过Ruby数组循环时
哈希值设置为:
{: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 [email protected] %>
<%= @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]
。
基本上,我有两个模型:位置和经验。经验是一个立场的孩子。我想获得给定职位的经验,但只能获得特定经历,例如在特定时间范围内发生的经历。这很可能是一种更好的方法,我只是不知道,所以我愿意接受建议。
谢谢。
完美的工作!非常感谢! – 2012-07-07 12:50:07