Возможно ли встроить уценку в erb?
Если вы используете haml в качестве шаблона представления рельсов, вы можете написать часть своей страницы, используя уценку, используя фильтр ":markdown".
Можно ли сделать то же самое с помощью erb?
2 ответа
ERB не имеет встроенной фильтрации. Вам нужно будет напрямую использовать драгоценный камень, который его обрабатывает, например, RDiscount или почтенный BlueCloth.
Довольно легко написать метод, который делает это, при условии, что вы используете что-то вроде Rails, которое имеет #capture
, #concat
, а также #markdown
хелперы. Вот пример использования Maruku:
def markdown_filter(&block)
concat(markdown(capture(&block)))
end
Тогда вы можете использовать это так:
<% markdown_filter do %>
# Title
This is a *paragraph*.
This is **another paragraph**.
<% end %>
Здесь есть несколько вещей, на которые стоит обратить внимание. Во-первых, важно, чтобы весь текст в блоке не имел отступов; Вы могли бы обойти это, выяснив общий отступ строк и удалив его, но я не сделал этого в примере помощника выше. Во-вторых, он использует Rails #markdown
помощник, который может быть легко реализован в других рамках Maruku
с выбранным вами процессором Markdown):
def markdown(text)
Maruku.new(text).to_html
end
Rails 3 удалил #markdown
помощник, так что просто добавьте приведенный выше код в соответствующий помощник, заменив процессор Markdown по вашему выбору.