在使用content_for时有多行,用于JavaScript

HAML Having Multiple Lines While Using content_for, for JavaScript

本文关键字:用于 JavaScript content for      更新时间:2023-09-26

我试图在页面上输出一些内联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语句之后只有1行,它实际上是有效的。

正确的语法是:

- 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)

这叫做转义,在这种情况下,你转义,呃,缩进:

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