Rails 6 - Action Text & API - PullRequest
       64

Rails 6 - Action Text & API

1 голос
/ 31 октября 2019

Я создаю приложение Rails 6.0.0, и оно имеет следующие модули:

  • Web - Forms / Cruds
  • Api

Есть CRUD, где я использую Текст действия . Форма работает нормально, я успешно реализовал артефакты Action Text.

В дальнейшем я создал JSON API, который предоставляет ресурсы, созданные с помощью форм. Выходной JSON выглядит следующим образом:

{
    "id": 3,
    "title": "Happy title",
    "content": {
        "id": 1,
        "name": "content",
        "body": "<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget tortor venenatis elit laoreet sagittis. In hac habitasse platea dictumst. Mauris nec nisl dapibus sem volutpat ultricies vel eu erat. Nunc at aliquet diam, vel pretium velit. <br><br><action-text-attachment sgid=\"BAh7CEkiCGdpZAY6BkVUSSI0Z2lkOi8vZXhpbi13ZWIvQWN0aXZlU3RvcmFnZTo6QmxvYi81P2V4cGlyZXNfaW4GOwBUSSIMcHVycG9zZQY7AFRJIg9hdHRhY2hhYmxlBjsAVEkiD2V4cGlyZXNfYXQGOwBUMA==--8f909146395a3dede0d4d5e47ad54d82d9e06367\" content-type=\"image/png\" url=\"http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6a79e95fd7a0fc0883190bd1201d4f5ecb1f8445/qrcode%20(2).png\" filename=\"qrcode (2).png\" filesize=\"497\" width=\"400\" height=\"400\" presentation=\"gallery\"></action-text-attachment><br><br><strong>Phasellus</strong> at dictum ligula. Sed tempus odio sed elit ultricies, in pulvinar purus dictum. Suspendisse sit amet fermentum lacus. Suspendisse sed tristique lectus.</div>",
        "record_type": "Announcement",
        "record_id": 3,
        "created_at": "2019-10-30T23:25:24.080Z",
        "updated_at": "2019-10-30T23:25:24.138Z"
    },
    "created_at": "2019-10-30T23:25:24.039Z",
    "updated_at": "2019-10-30T23:25:24.139Z"
}

ПРОБЛЕМА:

Если вы видите, атрибут content.body имеет текстовые теги Rails Action:

<action-text-attachment sgid...>

В конце дня текст действия Rails преобразует этот тег в HTML-тег рисунка, подобный этому, для визуализации изображений:

<figure class="attachment attachment--preview attachment--png">
    <img src="http://localhost:3000/rails/active_storage/representations/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6a79e95fd7a0fc0883190bd1201d4f5ecb1f8445/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCam9VY21WemFYcGxYM1J2WDJ4cGJXbDBXd2RwQWdBRWFRSUFBdz09IiwiZXhwIjpudWxsLCJwdXIiOiJ2YXJpYXRpb24ifX0=--defcd74f258f74bba5b028de265f7a5858cffd0b/qrcode%20(2).png">

  <figcaption class="attachment__caption">
      <span class="attachment__name">qrcode (2).png</span>
      <!--<span class="attachment__size"></span>-->
  </figcaption>
</figure>

ВОПРОС:

Как я могу отобразить тот же HTML с JSON API?

Мне нужно предоставить этот контент, чтобы отобразить его в нескольких клиентских приложениях.

1 Ответ

0 голосов
/ 31 октября 2019

Допустим, у меня есть has_rich_text :description. Чтобы получить чистый body, мне нужно было бы назвать его с description.body.to_s, поскольку он дает мне:

"<div class=\"trix-content\">\n  <div>test</div>\n</div>\n"

Как бы просто description.body не дал мне:

#<ActionText::Content "<div class=\"trix-conte...">
...