Rails 6 - 操作文本和 API

Lui*_*aro 6 ruby-on-rails ruby-on-rails-6 actiontext

我正在创建一个 Rails 6.0.0 应用程序,它具有以下模块:

  • 网络 - 表格 / Cruds
  • API

我在其中使用Action Text 的CRUD 。表单工作正常,我成功实现了操作文本工件。

接下来,我创建了一个 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"
}
Run Code Online (Sandbox Code Playgroud)

问题:

如果您看到,content.body 属性具有 Rails Action Text 标记:

<action-text-attachment sgid...>
Run Code Online (Sandbox Code Playgroud)

在一天结束时的表单中,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>
Run Code Online (Sandbox Code Playgroud)

问题:

如何使用 JSON API 呈现相同的 HTML?

我需要公开此内容以便在多个客户端应用程序中呈现它。

mat*_*iss 2

假设我有has_rich_text :description。为了变得纯粹,body我需要用它来调用它,description.body.to_s因为它给了我:

"<div class=\"trix-content\">\n  <div>test</div>\n</div>\n"
Run Code Online (Sandbox Code Playgroud)

不管多么简单description.body都会给我:

#<ActionText::Content "<div class=\"trix-conte...">
Run Code Online (Sandbox Code Playgroud)