class ActionText::RichText
Action Text RichText
¶ ↑
The RichText
record holds the content produced by the Trix editor in a serialized body
attribute. It also holds all the references to the embedded files, which are stored using Active Storage. This record is then associated with the Active Record model the application desires to have rich text content using the has_rich_text
class method.
class Message < ActiveRecord::Base has_rich_text :content end message = Message.create!(content: "<h1>Funny times!</h1>") message.content #=> #<ActionText::RichText.... message.content.to_s # => "<h1>Funny times!</h1>" message.content.to_plain_text # => "Funny times!" message = Message.create!(content: "<div onclick='action()'>safe<script>unsafe</script></div>") message.content #=> #<ActionText::RichText.... message.content.to_s # => "<div>safeunsafe</div>" message.content.to_plain_text # => "safeunsafe"
Public Instance Methods
Returns the ActiveStorage::Blob
s of the embedded files.
# File actiontext/app/models/action_text/rich_text.rb, line 52 has_many_attached :embeds
Returns the associated record.
# File actiontext/app/models/action_text/rich_text.rb, line 46 belongs_to :record, polymorphic: true, touch: true
Returns a plain-text version of the markup contained by the body
attribute, with tags removed but HTML entities encoded.
message = Message.create!(content: "<h1>Funny times!</h1>") message.content.to_plain_text # => "Funny times!"
NOTE: that the returned string is not HTML safe and should not be rendered in browsers.
message = Message.create!(content: "<script>alert()</script>") message.content.to_plain_text # => "<script>alert()</script>"
# File actiontext/app/models/action_text/rich_text.rb, line 69 def to_plain_text body&.to_plain_text.to_s end
Safely transforms RichText
into an HTML String
.
message = Message.create!(content: "<h1>Funny times!</h1>") message.content.to_s # => "<h1>Funny times!</h1>" message = Message.create!(content: "<div onclick='action()'>safe<script>unsafe</script></div>") message.content.to_s # => "<div>safeunsafe</div>"
# File actiontext/app/models/action_text/rich_text.rb, line 39 serialize :body, coder: ActionText::Content
Returns the body
attribute in a format that makes it editable in the Trix editor. Previews of attachments are rendered inline.
content = "<h1>Funny Times!</h1><figure data-trix-attachment='{\"sgid\":\"..."\}'></figure>" message = Message.create!(content: content) message.content.to_trix_html # => # <div class="trix-content"> # <h1>Funny times!</h1> # <figure data-trix-attachment='{\"sgid\":\"..."\}'> # <img src="http://example.org/rails/active_storage/.../funny.jpg"> # </figure> # </div>
# File actiontext/app/models/action_text/rich_text.rb, line 85 def to_trix_html body&.to_trix_html end