我有一個哈希值,我試圖通過循環顯示我的視圖中的值。未定義的方法`[]'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