Skip to Content Skip to Search

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"

Inherits From

Public instance methods

to_plain_text()

Permalink

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: "&lt;script&gt;alert()&lt;/script&gt;")
message.content.to_plain_text # => "<script>alert()</script>"
Source code GitHub
# File actiontext/app/models/action_text/rich_text.rb, line 56
def to_plain_text
  body&.to_plain_text.to_s
end

to_s

Permalink

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>"
Source code GitHub
# File actiontext/app/models/action_text/rich_text.rb, line 36
serialize :body, coder: ActionText::Content

to_trix_html()

Permalink

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>
Source code GitHub
# File actiontext/app/models/action_text/rich_text.rb, line 72
def to_trix_html
  body&.to_trix_html
end

Definition files