Maison  >  Questions et réponses  >  le corps du texte

Rails : tronquer le texte de la balise HTML tout en préservant le texte du lien lors de la troncature des colonnes de la base de données

J'ai une colonne de base de données appelée comment qui stocke les commentaires contenant des balises HTML.

Pour raccourcir les gros textes et les afficher complètement dans une fenêtre popup, j'ai utilisé la fonction truncate(comment, length: 50, escape: false).

Considérons deux exemples :

Exemple 1 : comment 列包含以下带有 HTML 标记的纯文本。通过使用 escape: false La colonne contient le texte brut suivant avec des balises HTML. En utilisant escape: false, les balises HTML ne sont pas tronquées et le texte s'affiche correctement, y compris toute mise en forme telle que le gras :

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

Exemple 2 : Dans ce cas, j'utilise href 标记创建链接,但 escape et le comportement ne fonctionne pas comme prévu. Il ne le reconnaît pas comme un balisage HTML, mais le traite comme du texte brut :

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

Après troncature, l'affichage est le suivant :

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

Cependant, le résultat souhaité est de tronquer uniquement le texte à l'intérieur de la balise , en laissant le texte du lien "ClickToOpenFile" intact.

J'ai essayé d'utiliser rawhtml_safe mais malheureusement, ils n'ont pas fourni les résultats souhaités.

P粉896751037P粉896751037402 Il y a quelques jours492

répondre à tous(1)je répondrai

  • P粉665427988

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

    Utilisez la gemme github.com/hgmnz/truncate_html :

    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>

    répondre
    0
  • Annulerrépondre