Creating empty array of items - should be a quick simple one


#1

here is some of the code:

@items_all = Item.find(:all)

for item in @items_all do
  if not FileTest.exist?(item.image_name)
    @items_missing_images += item
  end
end

You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.+

at @items_missing_images += item

so…how can i declare an empty array of Items?

i tried declaring @items_missing_images = []

but item is not of type array so this won’t work.


#2

Scott,

You need to declare the empty array first.
@items_missing_images = []

But do not use the '@items_missing_images += item ’
Use @items_missing_images.push(item)
or @items_missing_images << item

The += only works if you are adding an array to an array.

http://ruby-doc.org/core/classes/Array.html#M002232

Cheers


Robert Z.
Zapient, LLC
Ruby on Rails Development and Consulting

http://www.zapient.com
http://www.fromjavatoruby.com

On Nov 6, 8:01 pm, Scott K. removed_email_address@domain.invalid


#3

I probably should mention the best way to do what you are trying to
accomplish would be:

@items_missing_images = @items_all.reject { |item| FileTest.exist?
(item.image_name) }


Robert Z.
Zapient, LLC
Ruby on Rails Development and Consulting

http://www.zapient.com
http://www.fromjavatoruby.com


#4

I’m new to this but could you do this:

above this put

@items_missing_images = Array.new

and then in your if statement do this

@items_missing_images << item

Chas

On Thu, Nov 6, 2008 at 11:01 PM, Scott K. <


#5

thanks for both replies! that’s exactly what i was looking for.