I'm sorry, but I am a little lost here. In order to use what you were going for, I think you must have two struct variables 

Passenger = Struct.new(:name)
Train = Struct.new(:destination, :number_of_cars, :caboose, :number_of_engine)

And then with those struct variables, you create struct objects:
passengers = [Passenger.new(name: 'Bill Smith'), Passenger.new(name: 'Sarah Robot')]
train = Train.new( passengers, {destination: 'New York', number_of_engines: 4, caboose: true, number_of_cars: 5})

Then with the struct objects you print the information:

puts "Destination: #{train.destination}"
puts "Cars: #{train.number_of_cars}"
puts "Caboose: #{train.caboose}"
puts "Passengers: #{train.passengers}"
puts "Engines: #{train.number_of_engines}"