Class: ActionText::RichText
- Defined in:
- app/models/action_text/rich_text.rb
Overview
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.create!(content: "<h1>Funny times!</h1>")
.content #=> #<ActionText::RichText....
.content.to_s # => "<h1>Funny times!</h1>"
.content.to_plain_text # => "Funny times!"
= Message.create!(content: "<div onclick='action()'>safe<script>unsafe</script></div>")
.content #=> #<ActionText::RichText....
.content.to_s # => "<div>safeunsafe</div>"
.content.to_plain_text # => "safeunsafe"
Direct Known Subclasses
Instance Method Summary collapse
-
#body ⇒ Object
:method: to_s.
-
#embeds ⇒ Object
:method: embeds.
-
#record ⇒ Object
:method: record.
-
#to_plain_text ⇒ Object
Returns a plain-text version of the markup contained by the
bodyattribute, with tags removed but HTML entities encoded. -
#to_trix_html ⇒ Object
Returns the
bodyattribute in a format that makes it editable in the Trix editor.
Instance Method Details
#body ⇒ Object
:method: to_s
Safely transforms RichText into an HTML String.
= Message.create!(content: "<h1>Funny times!</h1>")
.content.to_s # => "<h1>Funny times!</h1>"
= Message.create!(content: "<div onclick='action()'>safe<script>unsafe</script></div>")
.content.to_s # => "<div>safeunsafe</div>"
39 |
# File 'app/models/action_text/rich_text.rb', line 39 serialize :body, coder: ActionText::Content |
#embeds ⇒ Object
:method: embeds
Returns the ActiveStorage::Attachment records from the embedded files.
Attached ActiveStorage::Blob records are extracted from the body
in a before_validation[rdoc-ref:ActiveModel::Validations::Callbacks::ClassMethods#before_validation] callback.
55 |
# File 'app/models/action_text/rich_text.rb', line 55 has_many_attached :embeds |
#record ⇒ Object
:method: record
Returns the associated record.
46 |
# File 'app/models/action_text/rich_text.rb', line 46 belongs_to :record, polymorphic: true, touch: true |
#to_plain_text ⇒ Object
Returns a plain-text version of the markup contained by the body attribute,
with tags removed but HTML entities encoded.
= Message.create!(content: "<h1>Funny times!</h1>")
.content.to_plain_text # => "Funny times!"
NOTE: that the returned string is not HTML safe and should not be rendered in browsers.
= Message.create!(content: "<script>alert()</script>")
.content.to_plain_text # => "<script>alert()</script>"
72 73 74 |
# File 'app/models/action_text/rich_text.rb', line 72 def to_plain_text body&.to_plain_text.to_s end |
#to_trix_html ⇒ Object
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>
88 89 90 |
# File 'app/models/action_text/rich_text.rb', line 88 def to_trix_html body&.to_trix_html end |