the regular truncate function works fine, just pass :escape => false as an option to keep the HTML intact. eg:
truncate(@html_text, :length => 230, :omission => "" , :escape => false)
RubyOnRails.org
*Edit I didn’t read the question very carefully (or at all TBH), so this answer does not solve this question… It IS the answer I happened to be looking for though, so hopefully it helps 1 or 2 people 🙂