Bonjour,
Nouveau dans l'univers de ruby on rails, je me permet d'envoyer un
premier mail pour demander un petit peu d'aide. Comme je cherche la
solution en même temps que je rédige ce mail, j'ai trouvé la/les
solutions à mon problème. Pour que ce ne soit pas perdu, je vous envoi
la question, et les réponses trouvées entre temps ... Si vous avez
mieux, n'hésitez pas à m'en faire part.
J'ai un petit problème d'encodage sur (Rails 3.0.3), et j'ai du mal à
m'en sortir.
_Question : Pourquoi les entités html ne fonctionne pas ?_
dans ma vue j'utilise un link_to en association avec la méthode translate
------------
<%= link_to( t(:menu_etiquette), "/etiquettes") %>
------------
j'ai donc configuré mon application pour qu'elle utilise le fichier
locale fr situé dans mon répertoire locale
-----------
fr:
menu_etiquette: "gestion des étiquettes"
-----------
A l'affichage, cela me ressort le code html suivant : gestion des
&eacute;tiquettes.
bof ...
_Réponses :_
C'est la protection XSS de Rails 3 qui me pose problème.
Plusieurs possibilités existent :
* soit écrire le fichier locale directement en utf-8 et ne pas utiliser
d'entité html. => pas pratique pour diverses raisons, le serveur est en
iso8859-1 et j'ai pas envie de jongler avec l'encodage des fichiers
* soit passer par le helper raw : <%= link_to(raw(t(:menu_etiquette)),
'/etiquettes' ) %> => pas pratique de rajouter un appel à raw a chaque
appel à translate.
* soit indiquer que la chaine est "sure", et qu'il n'y a pas besoin de
l'échapper : <%= link_to( t(:menu_etiquette).html_safe, '/etiquettes' %>
=> faut y penser a chaque fois, vraiment pas pratique.
Conclusion, à moins qu'il existe une solution que je n'ai pas trouvé, la
protection Xss par défaut, c'est bien ! mais c'est vachement
contraignant au final, surtout que je compte bien utiliser la méthode
translate un peu partout ...
merci pour vos retours.
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse
[email protected]