2012-03-07 3 views
1

У меня есть переменные элементы вызова, имеющие массив элементов, который содержит следующие значениярельсов 3 массива Undefine метода

[[#<Item id: 16, item_name: "Titan limited edition watch", description: "This is watch", reference_no: 21541, price: 5000, currency_type: nil, payment_type: "0", created_at: "2012-02-29 06:53:38", updated_at: "2012-02-29 06:53:38", quntity: 500, avatar_file_size: 8805, avatar_file_name: "images.jpg", avatar_content_type: "image/jpeg", avatar_updated_at: "2012-02-29 06:53:38">], [#<Item id: 25, item_name: "Titan limited edition watch", description: "this is watch", reference_no: 2, price: 5000, currency_type: nil, payment_type: "0", created_at: "2012-03-02 13:06:39", updated_at: "2012-03-02 13:06:39", quntity: 5, avatar_file_size: 8805, avatar_file_name: "images.jpg", avatar_content_type: "image/jpeg", avatar_updated_at: "2012-03-02 13:06:39">]] 

попытки сделать петлю как этого

@items.each do |item| 

end  

и переменным элемент содержит следующее значение

[#<Item id: 16, item_name: "Titan limited edition watch", description: "This is watch",  reference_no: 21541, price: 5000, currency_type: nil, payment_type: "0", created_at: "2012- 02-29 06:53:38", updated_at: "2012-02-29 06:53:38", quntity: 500, avatar_file_size: 8805, avatar_file_name: "images.jpg", avatar_content_type: "image/jpeg", avatar_updated_at: "2012-02-29 06:53:38">] 

, но когда я пробую следовать, дает мне ошибку

@items.each do |item|  
    item.item_name  
end  

ошибка

undefined method `item_name' for #<Array:0xb6c1dffc>  

пожалуйста, помогите мне. Спасибо.

ответ

0

У вас есть массив массивов; внутри цикла item - это массив, а массив не имеет метода item_name. Вам нужно получить элемент внутри массива.

@items.each do |item| 
    item[0].item_name 
end 

Вы можете также flatten массив, чтобы сделать его одномерным:

@items.flatten.each do |item| 
    item.item_name 
end 
+0

Done ... Спасибо man.You являются жизнь спасителя. –