класс ActionText::RichText
Action Text RichText
Запись RichText содержит содержимое, созданное редактором Trix, в сериализованном body атрибуте. Она также содержит все ссылки на вложенные файлы, которые хранятся с помощью Active Storage. Затем эта запись связывается с моделью Active Record, для которой приложение должно иметь содержимое с форматированием, используя метод класса has_rich_text.
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"
Публичные методы экземпляров
# File actiontext/app/models/action_text/rich_text.rb, line 52 has_many_attached :embeds
Возвращает ActiveStorage::Blob вложенных файлов.
# File actiontext/app/models/action_text/rich_text.rb, line 46 belongs_to :record, polymorphic: true, touch: true
Возвращает связанную запись.
# File actiontext/app/models/action_text/rich_text.rb, line 69 def to_plain_text body&.to_plain_text.to_s end
Возвращает текстовую версию разметки, содержащуюся в атрибуте body, со удаленными тегами, но с закодированными HTML-сущностями.
message = Message.create!(content: "<h1>Funny times!</h1>") message.content.to_plain_text # => "Funny times!"
ПРИМЕЧАНИЕ: возвращаемая строка не является безопасной для HTML и не должна отображаться в браузере.
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 39 serialize :body, coder: ActionText::Content
Безопасно преобразует RichText в 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 85 def to_trix_html body&.to_trix_html end
Возвращает атрибут body в формате, который позволяет редактировать его в редакторе Trix. Предварительные просмотры вложений отображаются встроены.
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>
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.