HAML с несколькими строками при использовании content_for, для JavaScript - PullRequest
8 голосов
/ 30 декабря 2011

Я пытаюсь вывести некоторые встроенные JS на странице.Я действительно не хочу добавлять его в какой-либо файл JS, так как он очень удобный и одноразовый.При этом я использую haml, а также пытаюсь использовать content_for для размещения JS после загрузки jquery из макета.

Проблема в том, что haml не нравится многострочный текст с отступом (я думаю)

Я пытаюсь сделать следующее:

=content_for :javascript do
  $(function(){
    $("#sell_tickets_here").live("vclick",function(){
      if($(this).is("checked"))
        $("#tickets_here").display("inline");
      else
        $("#tickets_here").display("none");
    });
  });

В моем макете яhave:

  = yield(:javascript)

Что на самом деле работает, если у меня есть только 1 строка после оператора content_for.

Ответы [ 2 ]

16 голосов
/ 30 декабря 2011

Правильный синтаксис:

- content_for :javascript do
  :javascript
    $(function(){
      $("#sell_tickets_here").live("vclick",function(){
        if($(this).is("checked"))
          $("#tickets_here").display("inline");
        else
          $("#tickets_here").display("none");
      }); 
    });

Обратите внимание на дефис по сравнению со знаком равенства и :javascript HAML-фильтр .HAML отлично работает с многострочным, если он имеет отступ с двумя пробелами.

А затем в другой части вашего взгляда:

= content_for(:javascript)
0 голосов
/ 12 марта 2014

Это называется экранированием , и в этом случае вы экранируете, эх, отступ:

=content_for :javascript do / $(function(){ / $("#sell_tickets_here").live("vclick",function(){ / if($(this).is("checked")) / $("#tickets_here").display("inline"); / else / $("#tickets_here").display("none"); / }); / });

...