- Rails HTML-экранирует любой контент, созданный пользовательским помощником, если только вы не запретите это. Попробуйте использовать
<%= raw parse(content) %>
на ваш взгляд.
- Цитировать кирку на
gsub
:
Если в качестве замены используется строка, специальные переменные из совпадения (например, $ & и $ 1)
не может быть подставлено в него, потому что подстановка в строку происходит до совпадения с шаблоном
начинается. Однако последовательности \ 1, \ 2 и т. Д. Могут использоваться для интерполяции последовательных нумерованных
групп в совпадении, и \ k заменит соответствующие именованные захваты.
Таким образом, вы не можете использовать #{$1}
, потому что $1
не устанавливается до тех пор, пока команда не будет выполнена. Лучше всего, вероятно, использовать блочную форму gsub - в этом случае $1
устанавливается внутри блока. Попробуйте:
def parse(content)
content.gsub(/@[a-zA-z0-9]+\b/) {link_to($1, user_path($1))}
end