Когда у меня есть скомпилируемое форматирование (будь то уценка или текстиль), я обычно сохраняю как HTML-версию, так и версию формата в базе данных.
Так что, вероятно, у меня будет folder.description_markdown
и folder.description_html
полей и в папке before_save on или в другом подходящем месте я бы выполнил разбор уценки и сохранил значение html.
Затем, на ваш взгляд, все, что вам нужно, это:
.description= raw folder.description_html
И если у вас есть страница редактирования для описания, вы должны убедиться, что текстовое поле корректно редактирует поле description_markdown.
Пример обратного вызова before_save, который у меня есть сейчас для сохранения текстового форматирования, прямо здесь:
class Page < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
# Note that the {attr}_changed? method is given to you
# by ActiveRecord for every database field on your model.
before_save :update_html, :if => :textile_changed?
def convert_textile
RedCloth.new(textile).to_html
end
protected
def update_html
self.html = convert_textile
end
end
Мне кажется, что это облегчает отслеживание шаблона haml, а также снижает издержки, связанные с анализом уценки при каждом получении поля.