10
votes

Les rails tronquent assistant avec un lien comme texte omet

Je suis une description assez longue que je veux tronquer en utilisant Truncate Helper. Donc, j'utilise le problème: xxx pré>

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)}"


1 commentaires

7 Réponses :


11
votes

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


3 commentaires

@ 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 au lieu du pluriel articles_Path


Qu'est-ce que le h avant de tronquer le faire?



7
votes

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)}")


1 commentaires

Le problème est que je ne peux pas être sûr de la santé mentale de l'article.description



4
votes

J'ai rencontré une situation similaire et cela a fait l'affaire. Essayer (pauses de ligne pour la lisibilité): xxx

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.


1 commentaires

Vous devrez faire attention à passer dans Escape: false , au moins à partir de Rails 4.0.1, puisque TEXTHELPER # TRONCATE Ajoutez sa propre évasion à la concaténation de H (article.description) et le texte omission . Aucune quantité de .html_safe l'empêchera.



2
votes

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", "#" }

#=> &lt;script&gt;alert(&#39;hello world&#39;...<a href="#">Read More</a>


0 commentaires

1
votes

Le seul qui a fonctionné pour moi: xxx


0 commentaires

11
votes

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", "#" 
}


1 commentaires

C'est ce qui m'a fait pour moi. Merci!



1
votes

J'ai eu le même problème, dans mon cas, je viens d'utiliser : Escape => false . Cela a fonctionné:

tronqua article.description,: Longueur => 200,: omission => "... # {link_to ('[plus]', articles_Path (article)}",: Escape => false

de la documentation:

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>


0 commentaires