Включить встроенный JS в HAML

Я не нахожусь на своей HAML. Интересно, как я могу написать что-то подобное, чтобы включить в шаблон, пока я взламываю его, но в HAML?

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

Ответ 2

На самом деле вы можете сделать то, что делает Крис Чалмерс в своем ответе, но вы должны убедиться, что HAML не анализирует JavaScript. Этот подход действительно полезен, когда вам нужно использовать другой тип, чем text/javascript, который мне нужно было сделать для MathJax.

Вы можете использовать фильтр plain, чтобы HAML не анализировал script и не допустил ошибку нелегальной вложенности:

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

Ответ 3

Итак, я пробовал следующее: javascript, который работает:) Однако HAML обертывает сгенерированный код на CDATA так:

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

Следующий HAML будет генерировать типичный тег для включения (например) типаkit или кода Google Analytics.

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

Ответ 4

Я использую fileupload-jquery в haml. Исходный js находится ниже:

<!-- The template to display files available for download -->
<script id="template-download" type="text/x-tmpl">
  {% for (var i=0, file; file=o.files[i]; i++) { %}
    <tr class="template-download fade">
      {% if (file.error) { %}
        <td></td>
        <td class="name"><span>{%=file.name%}</span></td>
        <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
        <td class="error" colspan="2"><span class="label label-important">{%=locale.fileupload.error%}</span> {%=locale.fileupload.errors[file.error] || file.error%}</td>
        {% } else { %}
        <td class="preview">{% if (file.thumbnail_url) { %}
          <a href="{%=file.url%}" title="{%=file.name%}" rel="gallery" download="{%=file.name%}"><img src="{%=file.thumbnail_url%}"></a>
          {% } %}</td>
        <td class="name">
          <a href="{%=file.url%}" title="{%=file.name%}" rel="{%=file.thumbnail_url&&'gallery'%}" download="{%=file.name%}">{%=file.name%}</a>
        </td>
        <td class="size"><span>{%=o.formatFileSize(file.size)%}</span></td>
        <td colspan="2"></td>
        {% } %}
      <td class="delete">
        <button class="btn btn-danger" data-type="{%=file.delete_type%}" data-url="{%=file.delete_url%}">
          <i class="icon-trash icon-white"></i>
          <span>{%=locale.fileupload.destroy%}</span>
        </button>
        <input type="checkbox" name="delete" value="1">
      </td>
    </tr>
    {% } %}
</script>