5 votes

Rails + Haml : Comment déséchapper un paramètre de balise ?

J'essaie d'accomplir le contenu suivant dans le code source :

<div id="box<%=id%>"></div>

Sans échapper à aucun signe dans Haml.

%div{ :id => "box_<%=id%>" }

produce

<div id='box_&lt;%=id%&gt;'></div>

Pour l'instant, le seul moyen de faire cela avec Haml est d'utiliser :plain filtrer et coder en dur le HTML sans utiliser de View Helpers. Comment puis-je corriger cela ?

J'en ai besoin car je suis obligé de suivre cette convention à cause de la convention syntaxique d'un tiers : Micro-Templating JavaScript

Référence :

Référence Haml

4voto

Vous dites que vous codez en Haml, mais les parenthèses indiquent Erb.

  • Étape 1 . Essayez l'interpolation normale de Ruby :

    %div{ :id => "box_#{id}" }
  • Étape 2 . Il n'y a pas d'étape 2.

Mise à jour : Lorsque j'ai écrit cette réponse, je n'avais jamais utilisé de cadre de templating JS auparavant. Je m'excuse de ne pas avoir compris pourquoi cela était nécessaire.

2voto

Riley Dutton Points 2041

En fait, il suffit de ne pas utiliser HAML pour cette seule déclaration. Par exemple, supposons que vous faites quelque chose comme ça dans HAML en ce moment :

%script#template(type="text/html")
    %div{ :id => "box_<%=id%>" }

Au lieu de cela, faites :

%script#template(type="text/html")
    <div id="box_<%=id%>"></div>

Il interprétera correctement la balise script comme HAML, puis, puisque vous n'utilisez pas de balise % , # etc. pour commencer la ligne suivante, il interprétera cette ligne comme du texte brut et la transmettra. Cela semble bien fonctionner pour moi et j'ai un cas très similaire au vôtre. La seule chose que j'ai faite, c'est de changer la balise jQote (le moteur de création de modèles que j'utilise pour ma création de modèles en Javascript) de la suivante % a $ avec cette déclaration Javascript dans le head de la page :

%script( type="text/javascript")
    $(function() { $.jqotetag( '$' ); });

De cette façon, le % n'embrouillent pas l'interprète de Ruby. Donc l'exemple final serait :

%script#template(type="text/html")
    <div id="box_<$=id$>"></div>

Bonne chance !

0voto

qen Points 1

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