После запуска regexp для моей строки я возвращаю все совпадения с помощью scan (которая возвращает массив строк).Я пытаюсь преобразовать каждый элемент в to_sym, но он не работает должным образом.
Мой код выглядит следующим образом:
path = "tests/:id/question/:title" res = path.scan(/:\w+/) res.map!(&:to_sym)
в итоге я получаю:
=> [:":id", :":title"]
из [:id, :title]
[:id, :title]
Это потому, что с /: \ w + / вы также получаете «:» как часть строки.
Попробуйте без использования «:», и тогда вы сможете конвертировать этистроки в символы:
'tests/:id/question/:title'.scan(/(?<=:)\w+/).map(&:to_sym) # [:id, :title]