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 &eacute;tiquettes"
-----------

A l'affichage, cela me ressort le code html suivant : gestion des &amp;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]

Répondre à