Forum: Ruby on Rails creating empty array of items - should be a quick simple one

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Scott K. (Guest)
on 2008-11-07 06:01
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

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 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.
Robert Z. (Guest)
on 2008-11-07 06:14
(Received via mailing list)

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.


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

On Nov 6, 8:01 pm, Scott K. <removed_email_address@domain.invalid>
Robert Z. (Guest)
on 2008-11-07 06:19
(Received via mailing list)
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
Scott K. (Guest)
on 2008-11-07 06:27
thanks for both replies!  that's exactly what i was looking for.
Chas Lemley (Guest)
on 2008-11-07 10:28
(Received via mailing list)
I'm new to this but could you do this:

above this put

@items_missing_images =

and then in your if statement do this

@items_missing_images << item


On Thu, Nov 6, 2008 at 11:01 PM, Scott K. <
This topic is locked and can not be replied to.