Je suis une description assez longue que je veux tronquer en utilisant Truncate Helper.
Donc, j'utilise le problème: Le problème est que je veux utiliser plus comme un lien cliquable, donc en théorie, je pourrais utiliser ceci: P> truncate article.description, :length => 200, :omission => "... #{link_to('[more]', articles_path(article)}"
7 Réponses :
Je suggérerais de faire cela seul dans une méthode d'assistance, de cette façon, vous aurez également un peu plus de contrôle sur la sortie:
def article_description article output = h truncate(article.description, length: 200, omission: '...') output += link_to('[more]', article_path(article)) if article.description.size > 200 output.html_safe end
@ Pam-Thomakos Cela fonctionne grandement à l'exception d'un problème. Lorsque je clique sur le lien, il va aux messages.1 Au lieu de POST / 1.
Il devrait être singulier article_path code> au lieu du pluriel
articles_Path code>
Qu'est-ce que le h code> avant de tronquer le faire?
Solution sale ... Utilisez la méthode "RAW" pour l'omme.
Vous devez être sûr de "SIANITY" de votre contenu.
raw(truncate article.description, :length => 200, :omission => "... #{link_to('[more]', articles_path(article)}")
Le problème est que je ne peux pas être sûr de la santé mentale de l'article.description
J'ai rencontré une situation similaire et cela a fait l'affaire. Essayer (pauses de ligne pour la lisibilité): Vous pouvez utiliser h pour assurer la mentale de la description de l'article, et que vous définissez le lien_to sur un chemin que vous savez ne pas être quelque chose de potentiellement néfaste, vous peut marquer la chaîne résultante comme html_safe sans préoccupation. p> p>
Vous devrez faire attention à passer dans Escape: false code>, au moins à partir de Rails 4.0.1, puisque
TEXTHELPER # TRONCATE CODE> Ajoutez sa propre évasion
à la concaténation de H (article.description) code> et le texte code> omission code>. Aucune quantité de
.html_safe code> l'empêchera.
TEXTHELPER # tronducate code> a un Forme de bloc de
tronquacer code>
, qui vous permet d'utiliser un link_to code> qui n'est pas échappé, tout en évitant toujours le texte tronqué:
truncate("<script>alert('hello world')</script>") { link_to "Read More", "#" }
#=> <script>alert('hello world'...<a href="#">Read More</a>
Le seul qui a fonctionné pour moi:
avec rails 4, vous pouvez transmettre un bloc pour le lien:
truncate("Once upon a time in a world far far away", length: 10, separator: ' ', omission: '... ') { link_to "Read more", "#" }
C'est ce qui m'a fait pour moi. Merci!
J'ai eu le même problème, dans mon cas, je viens d'utiliser de la documentation: p>
Le résultat est marqué comme html-coffre-fort, mais il est échappé par défaut, sauf si: Escape est faux ....
Link: http://apidock.com/rail/actionvoir/helpers/texthelper/trunate < / a> p>
blockQuote> : Escape => false code>.
Cela a fonctionné: p>
tronqua article.description,: Longueur => 200,: omission => "... # {link_to ('[plus]', articles_Path (article)}",: Escape => false code > p>
Dupliqué possible de Faites de l'omission dans Ruby Tronquez un lien