array.find_index
возвращает первый индекс элемента в array
, соответствующий переданному значению.
Если вам нужен индекс искомого значения, то вы должны выполнять итерацию с each_with_index:
indexes = []
array.each_with_index do |value, index|
indexes << index if value > 0
end
или более компактный (с одним выделением одного массива):
indexes = array.each_with_object([]).with_index {|(v, o), i| o << v if i > 0 }
или с возможностью множественного выделения:
indexes = array.map.with_index {|v, i| v > 0 ? i : nil }.compact
или:
indexes.map.with_index.select {|v| v.first > 0 }.map(&:last)