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
P粉896751037
P粉896751037 2023-09-12 19:18:11
0
1
553

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粉896751037
P粉896751037

répondre à tous(1)
P粉665427988

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>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal