У меня есть строка:Сформировать строку, содержащую спасся интерполяции
<ul>
<li><a href="/<%= @home %>/">welcome</a></li>
</ul>
Я использую Nokogiri, чтобы захватить href
свойства всех его a
тегов и построить массив хэшей. Я ожидаю:
[{
:href => "/#{ @home }/",
:title => "welcome"
}]
Я попробовал этот скрипт:
doc = Nokogiri::HTML(open(file))
menu = []
doc.css('a').each do |item|
menu.push({
:href => item[:href].gsub(/<%=(.*)%-?>/, "\#{\\1}"),
:title => item.text
})
end
Результирующая строка автоматически прибежит; обратите внимание на дополнительную обратную косую черту перед символьным символом:
[{
:href => "/\#{ @home }/",
:title => "welcome"
}]
Я не могу понять, почему. Есть идеи?
«и я не могу понять, почему» - потому что вы сами вставить экранированный знак хэша. –
Это строка с двойными кавычками, не выходя из нее, она будет интерполировать в gsub. Пробовал с unescaped # в одной кавычки. Тот же результат. –
@AndreiSerdeliuc, Try 'puts menu [0] [: href]' – falsetru