Если вы можете жить с ним, печатая «2.0» вместо «2», вы можете просто сделать:
"120m 90m".gsub(/(\d+)m/) { "#{$1.to_f / 60.0}h"}
#=> "2.0h 1.5h"
Если вам нужно, чтобы распечатать его без «.0», вам необходимо проверитьделится ли число на 60 и, если это так, возвращает $1.to_i / 60
вместо $1.to_f / 60.0
.
В качестве альтернативы вы можете вызвать to_s
в плавающей запятой и удалить .0
, если строка заканчивается на.«