首页  >  问答  >  正文

Rails:截断 HTML 标记文本,同时在数据库列截断期间保留链接文本

我有一个名为 comment 的数据库列,用于存储包含 HTML 标记的评论。

为了缩短大文本并在弹出窗口中完整显示它们,我使用了 truncate(comment, length: 50, escape: false) 函数。

让我们考虑两个例子:

示例 1: comment 列包含以下带有 HTML 标记的纯文本。通过使用 escape: false,HTML 标记不会被截断,并且文本会正确显示,包括任何格式,例如粗体:

<strong>123</strong><br>
\\<br>
<strong>test</strong>

示例 2: 在本例中,我使用 href 标记创建链接,但 escape 行为未按预期运行。它不会将其识别为 HTML 标记,而是将其视为纯文本:

<a href="/uploads/attachments/2211/test.pdf" target="_blank">ClickToOpenFile</a>

截断后,显示如下:

<a href="/uploads/attachments/2..

但是,期望的结果是仅截断 标记内的文本,保持链接文本“ClickToOpenFile”完整。

我尝试过使用 rawhtml_safe,但不幸的是,它们没有提供所需的结果。

P粉896751037P粉896751037423 天前523

全部回复(1)我来回复

  • P粉665427988

    P粉6654279882023-09-13 16:54:17

    使用 github.com/hgmnz/truncate_html gem:

    some_html = '<ul><li><a href="http://whatever">This is a link</a></li></ul>'
    truncate_html(some_html, length: 15, omission: '...(continued)')
      => <ul><li><a href="http://whatever">This...(continued)</a></li></ul>

    回复
    0
  • 取消回复