Spec-Zone.ru › Ruby on Rails 7.2

класс ActionText::RichText

Родитель:
ActionText::Record

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"

Публичные методы экземпляров

embeds() Показать исходный код
# File actiontext/app/models/action_text/rich_text.rb, line 52
has_many_attached :embeds

Возвращает ActiveStorage::Blob вложенных файлов.

record() Показать исходный код
# File actiontext/app/models/action_text/rich_text.rb, line 46
belongs_to :record, polymorphic: true, touch: true

Возвращает связанную запись.

to_plain_text() Показать исходный код
# 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: "&lt;script&gt;alert()&lt;/script&gt;")
message.content.to_plain_text # => "<script>alert()</script>"
to_s() Показать исходный код
# 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>"
to_trix_html() Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API