Внутри фильтра Haml вы используете строковую интерполяцию, чтобы включить код Ruby в вашу разметку.Например:
require 'haml'
@x = 42
Haml::Engine.new("%p= @x").render(self) #=> "<p>42</p>\n"
Haml::Engine.new(":textile\n\t= @x").render(self) #=> "<p>= @x</p>\n"
Haml::Engine.new(":textile\n\t\#{@x}").render(self) #=> "<p>42</p>\n"
@content = "alpha\n\n#hi **mom**"
Haml::Engine.new(":textile\n\t\#{@content}").render(self)
#=> "<p>alpha</p>\n<p>#hi <b>mom</b></p>\n"
Редактировать : Мой предыдущий ответ вводил в заблуждение относительно новых строк в содержании из-за моего некорректного тестирования.Как видно выше, новые строки во включенном контенте обрабатываются нормально напрямую.
Таким образом, ваш шаблон Haml должен просто выглядеть следующим образом:
- @articles.each do |article|
%article.post
%header=article.name
:textile
#{article.content}
%footer
Обратите внимание, что я удалил ваш %p
тег, окружающий вашу разметку, так как Textile представляет свои собственные обертки абзацев (даже для однострочного контента).