354 votes

RAW vs html_safe vs h à unescape html

Supposons que j’ai la chaîne suivante

À mon avis, je veux un lien à afficher. Autrement dit, je ne veux pas tout dans @x sans séquence d’échappement et affichées sous forme de chaîne. Quelle est la différence entre l’utilisation

?

401voto

Fábio Batista Points 11577

Compte Tenu De Rails 3:

html_safe , en fait, "définit la chaîne de caractères" comme HTML Coffre-fort (c'est un peu plus compliqué que ça, mais en gros, c'est elle). De cette façon, vous pouvez renvoyer le code HTML Sûr les chaînes à partir des aides ou des modèles à volonté.

h ne peut être utilisée à partir d'un contrôleur ou d'une vue, puisque c'est à partir d'un helper. Il va forcer la sortie d'échappement. Ce n'est pas vraiment obsolète, mais vous avez très probablement ne plus l'utiliser: le seul usage est de "revenir" html_safe déclaration, assez inhabituel.

Ajoutant votre expression avec raw est en fait équivalent à l'appel de to_s chaîne avec des html_safe , mais est déclaré sur un helper, tout comme h, de sorte qu'il peut être utilisé uniquement sur les contrôleurs et les vues.

"SafeBuffers et de Rails 3.0" est une belle explication sur la façon dont l' SafeBuffers (la classe qui ne l' html_safe de la magie).

127voto

roasm Points 423

Je pense qu’il faut le répéter : `` fait pas HTML-évasion votre chaîne. En fait, il empêchera votre chaîne à s’en échapper.

vais mettre :

dans votre code source HTML (Youpi, si sûr !), tout en :

sautera vers le haut de la boîte de dialogue alert (vous êtes sûr que c’est ce que vous voulez ?). Si vous ne voulez probablement pas à appeler `` sur toutes les chaînes entrées par l’utilisateur.

51voto

Pankhuri Points 214

La différence est entre les Rails' html_safe() et raw(). Il y a un excellent post de Yehuda Katz sur ce point, et il se résume à ceci:

def raw(stringish)

  stringish.to_s.html_safe

end

Oui, raw() est un wrapper autour de html_safe() que les forces de l'entrée à la Chaîne, puis des appels html_safe() . C'est aussi le cas, raw() est un assistant dans un module alors que html_safe() est une méthode de la classe String qui en fait une nouvelle ActiveSupport::SafeBuffer à l'instance qui a un @dirty drapeau.

Reportez-vous à "Rails " de html_safe vs raw".

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