2012-07-26 43 views
-9

我得到錯誤:數組:索引-7的出陣列

index -7 out of array 

什麼是錯我的陣列?我不能儲存太多數字,或者是什麼?

修訂

PS - (從JSON我只得到IDS)

answers_from_json = ActiveSupport::JSON.decode(params[:answers_from_json]) 

answers_from_json.each_with_index do |item, i| 

    posts  = Post.find(:all, :conditions => ["id=?",item.to_i]) 


     sheet[header_y_offset-1,0]   = 'Name' 

    posts.each_with_index do |post,i| 
    sheet[1+i,0] = post.name 
    end 
end  
+1

如果您發佈數組,這將會很有幫助。 – bento 2012-07-26 10:42:27

+5

我的猜測是,你寫了一些代碼,做的事情不是你的意思。但是我沒有看到它就說不出來。 – 2012-07-26 10:42:28

+0

你的問題就像是:「我有一個錯誤,你知道解決方案嗎?」。更多信息plz! – Pigueiras 2012-07-26 10:43:10

回答

1

您是從排列讀出的值,那不是有 - 期待一個數組來有它的多個元素比它實際上。再看看你的sheet陣列,它可能沒有i+1項目。

編輯:請記住,用基於0的索引,長度爲7的數組中最後一個指標是6;)

只需打印出它的長度和你想access.Then你可能會索引看到這個問題:

posts.each_with_index do |post,i| 
    p "length of the post: " + post.size 
    p "trying to access element nr. : " + (i + 1) 
    sheet[1+i,0] = post.name 
    end 

如果沒有在這裏引發的錯誤,那麼它可能是sheet[header_y_offset-1,0]聲明或類似的聲明,在錯誤實際發生 - 你得到的圖片我希望。最佳的方式是調試 - 但由於我不知道ruby的基本知識 - 我只能建議如何打印 - 調試 - 它應該是足夠的。

+0

數組有多少個元素? – 2012-07-26 10:51:26

+0

這不是問題在這裏 - 絕對遠遠多於7 - 問題是,你有實際的陣列小於7。正如我所說,只是打印出來,你可能會看到 – kostja 2012-07-26 10:54:32

+0

哦,好吧..我打印,和我有133個元素 – 2012-07-26 10:58:46