Tronquer une chaîne sans couper au milieu d'un mot dans les rails
Comment tronquer un texte à la position la plus proche avec rails 3, sans les couper au milieu d'un mot?
Par exemple, j'ai de la chaîne :
"Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum."
Si je me coupe, je veux les couper comme ceci :
"Praesent commodo cursus magna, vel scelerisque nisl ..."
Et non pas :
"Praesent commodo cursus magna, vel scelerisque nisl conse..."
Vous devez vous connecter pour publier un commentaire.
Si vous passez dans un séparateur à la méthode tronquer, il va effectuer un naturel coupure de mot plutôt que de les tronquer au milieu d'un mot
Quelque chose comme cela devrait fonctionner (varier la longueur que vous souhaitez supprimer complètement si vous voulez que la valeur par défaut de 30 caractères):
Plus d'informations sur les options que vous pouvez avoir dans tronquer peut être trouvé dans la La Documentation
Tronquer est une excellente option, mais si vous voulez avoir mot complet de détection, regex, c'est votre solution. Je recommande quelque chose comme ceci:
Ou vous pouvez mettre ceci dans une fonction
Mise à jour
Selon Les Rails de la documentation, vous pouvez passer des regex dans la méthode tronquer, comme suit:
Ces deux options offrent bien meilleur mot limite de détection de la transmission d'un caractère espace dans la méthode tronquer.
De départ
Rails 4.2
il y a un nouveauActiveSupport
méthode appeléestring#truncate_words
. Il tronque une chaîne de caractères en nombre de mots qui fait qu'il est impossible d'avoir une coupe au milieu d'un mot.qui renvoie