HAML在使用content_for、for JavaScript时有多行

HAML在使用content_for、for JavaScript时有多行,javascript,ruby-on-rails,haml,content-for,Javascript,Ruby On Rails,Haml,Content For,我试图在页面上输出一些内联js。我真的不想把它添加到任何JS文件中,因为它是如此的简单和一次性使用。也就是说,我正在使用haml,并尝试使用content_for,以便在从布局加载jquery后放置JS 问题是haml不喜欢缩进的多行文本(我认为) 我正在努力做到以下几点: =content_for :javascript do $(function(){ $("#sell_tickets_here").live("vclick",function(){ if($(thi

我试图在页面上输出一些内联js。我真的不想把它添加到任何JS文件中,因为它是如此的简单和一次性使用。也就是说,我正在使用haml,并尝试使用content_for,以便在从布局加载jquery后放置JS

问题是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");
    });
  });
在我的布局中,我有:

  = yield(:javascript)

如果我在content_for语句后面只有一行,这实际上是可行的

正确的语法应该是:

- 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可以很好地处理多行,只要它是2空间缩进的

然后在你观点的另一部分:

= content_for(:javascript)
这就是所谓的缩进,在这种情况下,你可以转义,呃,缩进:

=content\u for:javascript do
/$(函数(){
/$(“在这里出售门票”).live(“vclick”,函数(){
/如果($(this).is(“选中”))
/$(“#此处为票证”)。显示(“内联”);
/否则
/$(“此处有票”)。显示(“无”);
/   });
/ });

谢谢,这很有效。唯一需要注意的是,如果您有来自多个页面的javascript内容,它将为每个页面添加一个脚本标记。haml:javascript包装