33 votes

Désactiver l'échappement HTML dans les modèles erb

Dans un Rails 3 j'ai un domaine en classe où un attribut magasins pur contenu HTML (c'est un blog d'application, le domaine est la classe la Poste).

Dans le ERB modèles, j'ai besoin d'afficher le contenu de l'attribut comme il a été formmated, avec les balises HTML en place. Mais, les Rails s'échappe de toutes les balises HTML! Comment puis-je désactiver ce comportement pour cet attribut de classe?

Exemple:

somePost = Post.new
somePost.content = "<strong> Hi, i'm here! </strong>"

Dans le erb modèle:

<%= somePost.content %>

Le code HTML généré est échappé:

&lt;strong&gt; Hi, i'm here! &lt;/strong&gt;

54voto

Skilldrick Points 33002

Utiliser raw(string), comme décrit dans les notes de version.

7.4.3 D'Autres Changements

Vous n'avez plus besoin d'appeler h(string) pour échapper à la sortie HTML, il l'est par défaut dans tous les modèles d'affichage. Si vous souhaitez que le non échappés de la chaîne, appel brut(chaîne de caractères).

Fondamentalement, lorsque vous n'avez

<%=h @model.attr %>

avant de vous pouvez maintenant utiliser

<%= @model.attr %>

et si vous n'avez qu' avant, vous pouvez maintenant utiliser

<%=raw @model.attr %>

48voto

sevenseacat Points 12086

Essayez d’utiliser somePost.content.html_safe .

20voto

Chris Kimpton Points 2916

Utiliser un double égal signifie que le résultat n'est pas échappé ...

 <%== somePost.content %>
 

Voir cette question SO à ce sujet - Que fait <% ==%> dans rails erb?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X