web-dev-qa-db-fra.com

Comment insérer des symboles HTML spéciaux avec HAML

Quand je dis:

%p= item.price + " dollars"

Je suis en train

50 & nbsp; dollars

au lieu d'avoir un symbole d'espace incassable.

Comment insérer ceci et un autre symbole spécial en utilisant HAML?

41
AntonAL

Que diriez-vous 

%p= item.price + " dollars".html_safe
70
HakonB

Utilisez != au lieu de =

Voir "HTML simplifié" dans la référence haml: http://haml.info/docs/yardoc/file.REFERENCE.html#unescaping_html

14
Adam Fraser

J'ai essayé d'utiliser html_safe de différentes manières, mais aucune n'a fonctionné. Utiliser \xa0 comme suggéré par ngn n'a pas fonctionné non plus, mais cela m'a amené à essayer l'échappement Unicode de l'espace insécable, qui a fonctionné:

"FOO\u00a0BAR"

et .html_safe n'est même pas nécessaire (à moins que quelque chose dans la chaîne en ait besoin, bien sûr).

Le langage de programmation Ruby , première édition, indique: "Dans Ruby 1.9, les chaînes entre guillemets peuvent inclure des caractères d'échappement Unicode arbitraires avec des échappements \u. Dans sa forme la plus simple, \u est suivi de quatre chiffres hexadécimaux ..."

12
Teemu Leisti

L'option d'interpolation:

%p= "#{item.price} dollars".html_safe
11
Dave Simpson

Cette réponse concerne une question légèrement différente, mais j'ai trouvé cette question en train de la chercher ...
Si vous avez une balise d'envoi %input{ :type => "submit", :value => " dollars", :name => "very_contrived" } même si vous jetez un html_safe sur le :value, le code HTML ne sera pas évalué.
La solution est d'utiliser l'aide de Rails ... duh 

= submit_tag " dollars".html_safe

c'est assez évident mais ça m'a fait trébucher. Code hérité + mise à niveau Rails = ce genre de choses: P

4
mraaroncruz

Je préfère utiliser le caractère lui-même avec la méthode HTML échappée avec la plupart des symboles autres que les caractères d'espacement. De cette façon, je n'ai pas à me souvenir de tous les codes HTML. Pour ce qui est des caractères d’espace que je préfère utiliser en CSS, c’est beaucoup plus propre.

%p&= "#{item.price} $%&#*@"
0
Danny Oosthoek

Vous pouvez utiliser \xa0 dans la chaîne au lieu de  . 0xa0 est le code ASCII de l'espace insécable.

0
ngn