У вас есть некоторые проблемы при попытке получить ожидаемый результат:
Преобразование b в строку не дает вам ничего, кроме "[\"one\", \"two\"]"
, что не может быть повторено, поэтому я предполагаю, что это все испортит.
С другой стороны, кажется, что вы пытаетесь выполнить итерацию по a, затем выполнять итерацию по b, но, нажимая q на правое значение элементов a в String плюс вызов каждого в b, кажется, вы получаетеничего.
С небольшой настройкой вы можете сделать эту работу:
a = [:man, :woman]
b = ["one", "two"]
q = []
a.each do |n|
b.each do |w|
q << ("#{n}_#{w}").to_sym
end
end
p q
# [:man_one, :man_two, :woman_one, :woman_two]