Что пошло не так?
@temp.each do |t|
@event_names = Event.where(['id = ?', t.event_id]).all # will reassign @event_name each time
end
Вы переопределяете переменную @event_names каждый раз, когда проходите цикл, и, следовательно, единственные значения, которые будут храниться в @event_names, относятся к последнему проходу через этот цикл.
Что вы должны были сделать:
@temp.each do |t|
@event_names.push(Event.where(['id = ?', t.event_id]).all) or
end
Кроме того, как отмечали другие, это не самый лучший / хороший способ сделать это.