118 votes

Inclure JS en ligne dans HAML

Je ne suis pas sur mon HAML. Vous vous demandez comment je peux écrire quelque chose comme ceci à inclure dans un modèle pendant que je pirate dessus, mais en HAML?

 <script type='text/javascript'>
$(document).ready( function() {
  $('body').addClass( 'test' );
} );
</script>
 

Merci d'avance!

232voto

bcoughlan Points 6304
 :javascript
    $(document).ready( function() {
      $('body').addClass( 'test' );
    } );
 

Docs: http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#javascript-filter

24voto

Vous pouvez réellement faire ce que Chris Chalmers fait dans sa réponse, mais vous devez vous assurer que HAML n'analyse pas le code JavaScript. Cette approche est réellement utile lorsque vous devez utiliser un type différent de text/javascript , ce qui était le cas pour lequel j'avais besoin de faire pour MathJax .

Vous pouvez utiliser le filtre plain pour empêcher HAML d’analyser le script et de générer une erreur d’imbrication illégale:

 %script{type: "text/x-mathjax-config"}
  :plain
    MathJax.Hub.Config({
      tex2jax: {
        inlineMath: [["$","$"],["\\(","\\)"]]
      }
    });
 

18voto

Chris Chalmers Points 41

J'ai donc essayé ce qui précède: javascript qui fonctionne :) Cependant, HAML enveloppe le code généré dans CDATA comme suit:

 <script type="text/javascript">
  //<![CDATA[
    $(document).ready( function() {
       $('body').addClass( 'test' );
    } );
  //]]>
</script>
 

Le HAML suivant générera la balise typique pour inclure (par exemple) le code typekit ou google analytics.

  %script{:type=>"text/javascript"}
  //your code goes here - dont forget the indent!
 

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